2012-06-01 55 views
2

我不知道爲什麼會這樣,但在面料,當我嘗試設置這樣的變量:Python結構任務不設置變量?

@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  

我使用VAR =本地('some_command')在其他腳本,它工作正常。

回答

4

我在local()呼叫上看不到capture=True;這似乎是捕獲命令輸出所必需的。否則local()總是返回None,其在if語句中的計算結果爲False。見docs here