通过Python使用Plink(PuTTy)进行SSH连接

8 投票
3 回答
27200 浏览
提问于 2025-04-17 05:57

我正在尝试写一个Python脚本,通过SSH连接到一个服务器并执行一个命令。我在Windows上使用Python 2.6,并且已经安装了plink和pageant(用于SSH密钥),还把它们添加到了我的系统路径中。

如果我打开命令提示符并输入:

plink username@host -i key.ppk
open vnc://www.example.com/

我能看到预期的效果——我的Mac(服务器)上打开了一个VNC查看器。

但是,我尝试了两种方法通过Python来实现这个功能,但都没有成功:

方法一(os模块):

import os
ff=os.popen("plink user@host -i key.ppk",'w')
print >>ff, r"open vnc://www.example.com"
ff.flush() 

方法二(subprocess模块):

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窗口。不过,我相信它们都成功连接到了远程主机。

我到底哪里做错了呢?

3 个回答

-1

我会尝试:

Popen("plink user@host -i key.ppk", shell=True)
Popen("open vnc://www.example.com", shell=True)
0

我使用fabric这个工具来自动化在远程电脑上通过SSH运行命令。

7

在第二种方法中,使用

ff.communicate("open vnc://www.example.com\n")

撰写回答