python - 使用 paramiko 和 exec_command 进行 SSH

标签 python ssh paramiko

尝试使用 SSH 和 paramiko 从 Windows 服务器 SSH 到 Linux 远程连接,并使用以下代码“pwd”该服务器(我已从真实代码更改了用户/密码和服务器 IP):

import paramiko
from paramiko import SSHClient, AutoAddPolicy
LOCAL_IP=IP
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(LOCAL_IP,username=username, password=password)
client.exec_command('pwd')

我得到以下结果:

(<paramiko.ChannelFile from <paramiko.Channel 0 (open) window=24576 -> <paramiko.Transport at 0x6716710L (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>>,
 <paramiko.ChannelFile from <paramiko.Channel 0 (open) window=24576 -> <paramiko.Transport at 0x6716710L (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>>,
 <paramiko.ChannelFile from <paramiko.Channel 0 (open) window=24576 -> <paramiko.Transport at 0x6716710L (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>>)

SSH 连接已打开,我可以通过 Linux 服务器上的 netstat 得知我正在尝试通过 SSH 访问......

最佳答案

client.exec_command 返回一个 stdin、stdout 和 stderr 流的元组 - 您需要分配这些流并调用 read() 来获取输出:

import paramiko
from paramiko import SSHClient, AutoAddPolicy
LOCAL_IP=IP
PORT=your_port
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(LOCAL_IP, PORT, username="username", password="password")
stdin, stdout, stderr = client.exec_command("pwd")
print(stdout.read())

关于python - 使用 paramiko 和 exec_command 进行 SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49896802/

相关文章:

python - 如何在 blender-2.68 中加载 .ply 文件并通过命令行/脚本对其应用修改器?

python - 生成 datetime.time 对象数组 python

security - 非对称 key 容器的相互转换(例如 : X. 509、PGP、OpenSSH)

java - 如何使用 JSch SSH 到另一个 SSH 服务器后面的服务器?

python - Paramiko 连接问题

python - 如何使用python在不登录服务器的情况下在服务器中执行迭代命令

python - 在Python3中从字符串中抓取某些文本

python - 从数组数组中删除 Nan

python - 关于在不覆盖现有数据的情况下将此数据(JSON)存储在 Redis 中的建议?

bash - RVM安装将无法进行