我想在两台笔记本电脑之间使用ssh并使用Paramiko发送命令。诸如ls
和echo
之类的命令可以按预期工作,但是当使用非标准命令(如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")
答案 0 :(得分:1)
当您拥有~/.bashrc
这样的shell配置文件时,就会发生这种情况,该配置文件将PATH
环境变量设置为包括非标准的可执行搜索路径。
要解决此问题,只需手动登录并运行iperf
即可找出which iperf
的位置。拥有完整路径后,请在exec_command()
中使用它。
例如,您的新代码可能如下所示:
ssh.exec_command("/opt/local/bin/iperf -s")