我正在尝试编写一个python脚本,将SSH到服务器并执行命令。我在Windows上使用Python 2.6,并安装了plink和paegent(用于ssh密钥)并将它们全部添加到我的路径中。
如果我在命令提示符下输入:
plink username@host -i key.ppk
open vnc://www.example.com/
我看到了期望的行为——VNC查看器在我的Mac(服务器)上打开。
但是,如果我尝试了两种通过Python编程的方法来实现这一点,但都不起作用:
方法1 (os):
import os
ff=os.popen("plink user@host -i key.ppk",'w')
print >>ff, r"open vnc://www.example.com"
ff.flush()
方法2(子过程):
import subprocess
ff=subprocess.Popen("plink user@host -i key.ppk",shell=False,stdin=subprocess.PIPE)
ff.stdin.write(r"open vnc://www.example.com")
ff.stdin.flush()
两种方法都不会产生错误,但是都不会打开VNC窗口。但是,我相信它们都成功地连接到远程主机。
我做错了什么?
第二种方法,使用
ff.communicate("open vnc://www.example.comn")
我使用fabric在远程PC上通过SSH自动运行命令。
我会试试:
Popen("plink user@host -i key.ppk", shell=True)
Popen("open vnc://www.example.com", shell=True)