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

发布于 2024-12-14 20:05:39 字数 764 浏览 2 评论 0原文

我正在尝试编写一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

请持续率性 2024-12-21 20:05:39

在第二种方法中,使用

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

In the second approach, use

ff.communicate("open vnc://www.example.com\n")
恰似旧人归 2024-12-21 20:05:39

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

I use fabric for automation of runnning commands via SSH on a remote PC.

信仰 2024-12-21 20:05:39

我会尝试:

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

I'd try :

Popen("plink user@host -i key.ppk", shell=True)
Popen("open vnc://www.example.com", shell=True)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文