执行 Fabric 的 Python 在 Linux 上不起作用错误

问题描述

我是来找你帮忙的,我有一个 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","") 现在我有另一个问题要检查。

谢谢:)