使用Plink(PuTTy)通过Python SSH

Jef*_*eff 8 python ssh putty plink subprocess

我正在尝试编写一个将SSH连接到服务器并执行命令的python脚本.我在Windows上使用Python 2.6,并安装了plink和paegent(用于ssh密钥)并将它们全部添加到我的路径中.

如果我转到命令提示符并键入:

plink username@host -i key.ppk
open vnc://www.example.com/
Run Code Online (Sandbox Code Playgroud)

我看到了所需的行为 - 我的Mac(服务器)上打开了VNC查看器.

但是,如果我尝试过两种方法通过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() 
Run Code Online (Sandbox Code Playgroud)

方法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()
Run Code Online (Sandbox Code Playgroud)

这两种方法都不会产生错误,但都不会打开VNC窗口.但是,我相信他们都成功连接到远程主机.

我究竟做错了什么?

Cit*_*ito 7

在第二种方法中,使用

ff.communicate("open vnc://www.example.com\n")
Run Code Online (Sandbox Code Playgroud)