8

我正在尝试编写一个 python 脚本,它将通过 SSH 连接到服务器并执行命令。我在 Windows 上使用 Python 2.6,并安装了 plink 和 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 窗口。但是,我相信他们都成功连接到远程主机。

我究竟做错了什么?

4

3 回答 3

7

在第二种方法中,使用

ff.communicate("open vnc://www.example.com\n")
于 2011-11-09T16:35:18.473 回答
0

我使用fabric在远程PC 上通过SSH 自动运行命令。

于 2019-02-06T12:16:47.337 回答
-1

我会尝试:

Popen("plink user@host -i key.ppk", shell=True)
Popen("open vnc://www.example.com", shell=True)
于 2011-11-09T16:29:07.640 回答