2012-06-01 1 views
2

Я не знаю, почему это происходит, но в ткани, когда я пытаюсь и не установить переменную так:Задача Python Fabric не задает переменную?

@task 
def deploy_small_ec2_ami(name): 
    a = local("/usr/bin/ldapsearch -x -w secret -D 'cn=admin,dc=example,dc=net' -b 'dc=example,dc=net' -h ldap-01 -LLL 'cn=%s'" %(name)) 
    if a: 
     sys.exit(1) 

Независимо от того, что переменная «а» никогда не устанавливается, даже если имя существует в LDAP так выход никогда не вступает в силу. Я пытался добавить «Печатает», и я ничего не вижу, как, но я знаю, что команда работает, потому что я получаю вывод следующим образом (хост, который существует в LDAP):

user:~/Projects/fabtask$ fab deploy_small_ec2_ami:bob,ldap 
[localhost] local: /usr/bin/ldapsearch -x -w secret -D 'cn=admin,dc=example,dc=net' -b 'dc=example,dc=net' -h ldap-01 -LLL 'cn=bob' 
dn: cn=bob,ou=hosts,dc=example,dc=net 
cn: bob 
environment: production 
ipHostNumber: 
objectClass: device 
objectClass: ipHost 
objectClass: puppetClient 
objectClass: top 
puppetClass: cassandra  

Я использую вар = local ('some_command') в других скриптах, и он отлично работает.

ответ

4

Я не вижу capture=True на вашем звонке local(); что кажется необходимым для захвата вывода вашей команды. В противном случае local() всегда возвращает None, что составляет False в заявлении if. См. docs here.