Fabric run()输出是污垢

时间:2016-12-27 14:53:51

标签: python fabric

当我使用时:

out = run("ls") 

我想" out"文件列表。但是,我也得到了垃圾。如何才能获得shell命令?

$ fab -p 111 -H server func
[server] Executing task 'func'
[server] run: ls
[server] out:
[server] out:
[server] out: MQSI 9.0.0.3
[server] out: /opt/IBM/mqsi/9.0.0.3
[server] out:
[server] out: /var/mqsi/odbc/odbc64.ini
[server] out: file1 file2 file3
[server] out:

MQSI 9.0.0.3
/opt/IBM/mqsi/9.0.0.3

/var/mqsi/odbc/odbc64.ini
file1 file2 file3

所以在out我得到了从MQSIfile3的所有文字。但我只需要file1 file2 file3

可能不是布料故障。也许是服务器shell的东西。

我非常尝试使用不同的面料隐藏,但没有找到答案。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,请通过"垃圾"你指的是" \ t"," \ r"和" \ n" ls命令输出中出现的字符。我刚刚生成的一个例子如下:

>>>> out = run('ls')
>>>> print(out)
'nginx\t\t\t\tnginx.bak.20151206-2209.tar.gz\tnginx.bak.20151206-2258.tar.gz\tphp-fpm.conf.save\r\nnginx.bak.20151206-2047.tar.gz\r\nnginx.bak.20151206-2153.tar.gz\tnginx.bak.20151206-2226.tar.gz\tphp-fpm.conf\t\t\tsupervisord.conf\r\nnginx.bak.20151206-2206.tar.gz\tnginx.bak.20151206-2255.tar.gz\tphp-fpm.conf.default\t\tvarnish'

要将其转换为列表,您可以.split(),例如:

>>> out.split()
['nginx', 'nginx.bak.20151206-2209.tar.gz', 'nginx.bak.20151206-2258.tar.gz', 'php-fpm.conf.save', 'nginx.bak.20151206-2047.tar.gz', 'nginx.bak.20151206-2153.tar.gz', 'nginx.bak.20151206-2226.tar.gz', 'php-fpm.conf', 'supervisord.conf', 'nginx.bak.20151206-2206.tar.gz', 'nginx.bak.20151206-2255.tar.gz', 'php-fpm.conf.default', 'varnish']