python - 使用 Plink (PuTTy) 通过 Python 进行 SSH

标签 python ssh putty plink subprocess

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

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

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

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

但是,如果我尝试了两种方法通过 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")

关于python - 使用 Plink (PuTTy) 通过 Python 进行 SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8067979/

相关文章:

python - opencv 2.x中的内存泄漏

python - 尝试使用/Lambda 在 S3 上拆分大型 TSV 文件

ssh - gitlab 错误连接到主机 gitlab.com 端口 22 : Connection timed out

linux - 远程 Postgresql 端口 5400 监听但关闭?

linux - Debian:在 PuTTY 中自动终止时重新启动进程

python - src/pip-delete-this-directory.txt 我可以删除这个文件吗?

python - 如何在 Vim 中拉出整个 block ?

linux - 通过 SSH 启动一个长时间运行的程序

c# - 如何在 C# 应用程序中生成 SSH 2 RSA key ?

ssh - 在 Windows 中通过 cmd 为 ssh 命令或 putty 提供代理