如何解决如何在 Python 中通过 SSH 连接和 plink 进行通信?
从 Windows(Windows 10,Python3.6.3)我想向 Linux 服务器发送一些简单的命令并返回结果。而已。我想保持简单和简短。我没想到这会如此困难,但似乎有一堆有用但不起作用、过时或过于复杂的解决方案。我知道,不应在命令行中传递密码,但我处于封闭环境中,因此我不需要高级加密和公钥/私钥等。我也知道人们强烈建议使用 {{1 }},但由于不同的原因我无法安装。
到目前为止我的学习:
-
Paramiko
不适用于 Windows -
pxssh
不允许在命令行中发送密码(而PuTTY
允许) - 人们强烈建议使用
plink
。虽然由于不同的原因我无法安装。 -
Paramiko
基于Fabric
- 我尝试了
Paramiko
没有成功
我想,列出对我不起作用的代码片段的所有链接是没有意义的,太多了......这些问题的以下 StackOverflow 答案要么已经过时,要么也没有帮助:
- Perform commands over ssh with Python
- Python script for SSH through PuTTY
- Using Plink (PuTTy) to SSH through Python
- How to execute a program or call a system command from Python?
目前,我认为我最接近 ssh.exe
因为在 Windows 命令行中,以下内容
plink
无需手动输入密码或回车确认直接登录,我可以手动输入C:\Users\Downloads\PuTTY\plink.exe -ssh -batch user@111.22.33.44 -pw abc123
、ls
等命令
但是,现在我想通过 Python 程序以编程方式执行此操作。 从这里开始:https://stackoverflow.com/a/32615977/7295599(似乎已经过时)。 到目前为止,我得到了以下结果:
uname -a
但是这在 10 秒后超时,没有打印任何结果。
我不确定这是否是 import subprocess
ffname_exe = r'C:\Users\Downloads\PuTTY\plink.exe'
user='user'
server='111.22.33.44'
password = 'abc123'
plink = '{} -ssh -batch {}@{} -pw {}'.format(ffname_exe,user,server,password)
print(plink)
proc = subprocess.Popen(plink,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
command='uname -a'
stdout,stderr = proc.communicate(command.encode(),timeout=10)
print(stdout)
print(stderr)
或 subprocess
或服务器的问题?实际上,我不受 plink
,Windows 上使用 plink
、PuTTY
等的任何其他简单解决方案的约束,无需用户交互(输入密码或确认任何内容)和安装ssh.exe
很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。