Python Fabric:捕获run()输出时过滤掉服务器输出
发布时间:2020-12-20 13:41:17 所属栏目:Python 来源:网络整理
导读:考虑一个 Linux服务器,它在用户的.bash_profile中包含以下行: echo "Hello world" 所以,每当你进入它时,你会看到Hello world 现在,考虑以下fabric脚本: #!/usr/bin/env pythonfrom fabric.api import *env.hosts = [...]@taskdef test(): with cd('/'): pr
考虑一个
Linux服务器,它在用户的.bash_profile中包含以下行:
echo "Hello world" 所以,每当你进入它时,你会看到Hello world 现在,考虑以下fabric脚本: #!/usr/bin/env python from fabric.api import * env.hosts = [...] @task def test(): with cd('/'): print run('ls').split() 你希望它输出如下: 但实际输出将是: 这是fabric中的错误吗?有没有办法抑制服务器输出? time.sleep()没有帮助 解决方法
Fabric执行远程Bash shell
in login mode.这会导致执行配置文件.您可以通过打开调试模式自行查看.在我的机器上以调试模式执行脚本会产生以下(除其他外)
[x.x.x.x] Executing task 'test' [x.x.x.x] run: /bin/bash -l -c "cd / && ls" 注意-l传递给远程bash调用 所以改变 with cd('/'): 在你的代码中 with cd('/'),settings(shell='/bin/bash -c'): (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |