我想写一个python脚本,将SSH连接到服务器并执行的命令。我在Windows上使用Python 2.6,并且已经安装了砰砰和paegent(针对SSH密钥),并将它们全部加到我的道路。
如果我去的命令提示符下输入:
plink username@host -i key.ppk
open vnc://www.example.com/
我看到在我的Mac(服务器)所期望的行为 - 一个VNC查看器中打开。
但是,如果我已经尝试了两种方法通过编程的Python来做到这一点,无论是工作:
方法1():
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.com\n")
我用fabric用于通过SSH远程PC上运行命令的自动化。
我会尝试:
Popen("plink user@host -i key.ppk", shell=True)
Popen("open vnc://www.example.com", shell=True)