使用 Plink (PuTTy) 通过 Python 进行 SSH
我正在尝试编写一个 python 脚本,它将通过 SSH 连接到服务器并执行命令。我在 Windows 上使用 Python 2.6,并安装了 plink 和 paegent (用于 ssh 密钥)并将它们全部添加到我的路径中。
如果我转到命令提示符并键入:
plink username@host -i key.ppk
open vnc://www.example.com/
我会看到所需的行为 - VNC 查看器在我的 Mac(服务器)上打开。
但是,如果我尝试了两种方法通过 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()
方法 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 窗口。但是,我相信它们都成功连接到远程主机。
我做错了什么?
I am trying to write a python script that will SSH to a server and execute a command. I am using Python 2.6 on Windows, and have installed plink and paegent (for ssh keys) and added them all to my path.
If I go to the command prompt and type:
plink username@host -i key.ppk
open vnc://www.example.com/
I see the desired behavior-- a VNC viewer opens on my Mac (server).
However, if I have tried two approaches to do this programmatically through Python and neither is working:
Approach 1 (os):
import os
ff=os.popen("plink user@host -i key.ppk",'w')
print >>ff, r"open vnc://www.example.com"
ff.flush()
Approach 2 (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()
Neither approach produces an error, but neither opens the VNC window. However, I believe they both successfully connect to the remote host.
What am I doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在第二种方法中,使用
In the second approach, use
我使用 fabric 通过 SSH 在远程 PC 上自动运行命令。
I use fabric for automation of runnning commands via SSH on a remote PC.
我会尝试:
I'd try :