问题描述
我是来找你帮忙的,我有一个 Python 脚本可以收集我网络的机器 IP(192.168.1.X 到 192.168.1.Y)。
有关信息,我正在使用 Linux Ubuntu 16.04,Python 版本为 2.7
所以,这是我的 Python 脚本 执行(收集的 IP 作为 ip_list 的字符串):
import subprocess
ip_list = "192.168.1.1,192.168.1.2,192.168.1.3,192.168.1.4,192.168.1.5"
cmd2 = ("fab -f /home/user/fabfile.py -H " + ip_list + " -u user -p password auto_install")
proc2 = subprocess.Popen(cmd2,shell=True,stdout=subprocess.PIPE)
我的 Fabric 脚本 只是我放入机器并执行的 bash 脚本,这是一个示例:
put("/home/user/bash_script","/home/user/bash_script",False)
sudo('bash /home/user/bash_script')
但是......当我执行 sudo python myPythonScript.py 时,这个错误出现在终端中:
close Failed in file object destructor:
sys.excepthook is missing
lost sys.stderr
/bin/sh: 2: -u: not found
解决方法
好的,我明白了,你救了我! @博多
我没有打印我的 cmd2,但在 ip_list 和 -u 之间似乎有一个 \n >
所以我做了 cmd2=cmd2.replace("\n","") 现在我有另一个问题要检查。
谢谢:)