当我使用时:
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
我得到了从MQSI
到file3
的所有文字。但我只需要file1 file2 file3
可能不是布料故障。也许是服务器shell的东西。
我非常尝试使用不同的面料隐藏,但没有找到答案。
答案 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']