如何使 Paramiko 运行 像 iPerf 这样的非标准命令

How to make Paramiko run non-standard commands like iPerf

我想使用 ssh 并使用 Paramiko 在两台笔记本电脑之间发送命令。 lsecho 等命令按预期工作,但在使用 iPerf 等非标准命令时出现以下错误:

['bash: iperf: command not found\n']

如果我通过手动终端打开 ssh 连接,该命令可以正常工作。

代码如下:

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=HOST, username=USER, password=PWD)
stdin, stdout,stderr = ssh.exec_command("iperf -s")

当您有像 ~/.bashrc 这样的 shell 配置文件时会发生这种情况,它将您的 PATH 环境变量设置为包含非标准的可执行搜索路径。

要修复它,只需通过手动登录并 运行 which iperf 找出 iperf 所在的位置。获得完整路径后,在 exec_command().

中使用它

例如,您的新代码可能如下所示:

ssh.exec_command("/opt/local/bin/iperf -s")