2013-04-24 41 views
1

一直试图解决这个问题,但似乎无法使其工作。我想创建一个看起来像$ HOSTNAME-timestamp的日志文件。例如,我有这样的:Python - 使用定义和env.hosts创建结构日志文件

def test_servers(): 
    env.user = getpass.getuser() 
    env.hosts = ['servernumber1', 'servernumber2'] 


def logname(): 
     timestamp = time.strftime("%b_%d_%Y_%H:%M:%S") 
     'env.hosts' + timestamp 

def audit(): 
     name = logname() 
     sys.stdout = open('/home/path/to/audit/directory/%s' % name, 'w') 
     run('hostname -i') 
     print 'Checking the uptime of: ', env.host 
     if run('uptime') < '0': 
       print(red("it worked for less")) 
     elif run('uptime') > '0': 
       print(green("it worked for greater")) 
     else: 
       print "WTF?!" 

当我在我的fabfile.py运行面料进行“审核”它工作得很好,但它不是在文件的开头创建具有附加的主机名的日志文件。它确实为每个在test_servers中定义的主机创建了一个日志文件,但是有时间戳。任何帮助将不胜感激。

+2

在'LOGNAME加上'return'()'如'回报 “%S_%的” %(env.host_string,时间戳)' – jfs 2013-04-25 16:22:38

+0

您好,先生,您真了不起。谢谢您的帮助。那样做了! – Kryten 2013-04-25 17:51:36

回答

0

看起来像env.hosts不能在函数中定义,只有env.host_string。

所以我想也许你有像一些错误信息:

No hosts found. Please specify (single) host string for connection: 
+0

没有得到那个错误。如前所述,我没有收到任何错误。只要env.hosts无法在函数中定义,您可能会遇到一些问题。我会开始窃取它并发现。 – Kryten 2013-04-25 15:14:15

+0

我修复了它,请参阅http://stackoverflow.com/questions/16209242/passing-a-fabric-env-hosts-sting-as-a-variable-is-not-work-in-function/16211112#16211112 – mcsrainbow 2013-04-27 08:25:25