如何通过subprocess.Popen向远程shell发送多个输入
我想在远程电脑上运行多个命令,首先通过ssh连接到那台机器,然后在它的终端上执行命令。
我想用subprocess来完成这个工作。所以我写了以下命令:
import subprocess
process = subprocess.Popen(['ssh', 'rahul@172.20.70.121'], shell=False, stdin=subprocess.PIPE)
现在我已经连接到了远程机器的终端,并且我输入了以下命令,这个命令在那台机器上执行:
print process.communicate('python test.py /home/rahul/vPath-dissector')
但是当我再次调用上一个命令时,它出现了错误:
print process.communicate('python temp.py /home/rahul/vPath-dissector')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/subprocess.py", line 690, in communicate
self.stdin.write(input)
ValueError: I/O operation on closed file
那么我该用什么命令来发送多个命令,而不关闭文件呢???
3 个回答
0
我不确定这对你是否有帮助,因为你明确问了关于subprocess.Popen的内容。
不过,你可以直接在命令行中执行你的远程命令,方法是使用
ssh rahul@172.20.70.121 python test.py /home/rahul/vPath-dissector
当然,你也可以通过Python来执行,方法是使用
os.system("ssh rahul@172.20.70.121 python test.py /home/rahul/vPath-dissector")
你还可以获取这个命令的输出结果。
如果我没有理解你的意思,抱歉哦...