在对一台远程计算机执行ssh之后,我尝试在该计算机上运行多个命令,然后在其终端上运行命令。
我想使用子进程来完成这项工作。所以我写了下面的命令:
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
那么,我可以使用什么命令在不关闭文件的情况下发送多个命令呢?
发布于 2012-03-31 20:45:56
发布于 2011-09-30 11:54:22
我不确定这对您是否有用,因为您明确地请求了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")
您还可以捕获此命令的输出。
如果我没听懂你的意思,很抱歉...
https://stackoverflow.com/questions/7609918
复制相似问题