python - 如何让 Paramiko 运行 iPerf 等非标准命令
问题描述
我想使用 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")
解决方案
当您有一个 shell 配置文件时会发生这种情况,该配置文件~/.bashrc
将您的PATH
环境变量设置为包含非标准的可执行搜索路径。
要修复它,只需iperf
手动登录并运行which iperf
. 一旦你有了完整的路径,在你的exec_command()
.
例如,您的新代码可能如下所示:
ssh.exec_command("/opt/local/bin/iperf -s")
推荐阅读
- kubernetes - 如何删除添加到 microk8s 图像缓存的 docker 图像?
- node.js - Slack 未发送 message_replied 子类型事件
- elisp - 参数数量错误:扩展列表时的 lambda (lst1 lst 2)
- java - 如何在 Spring 的一个 ConstraintValidator 中同时验证 @PathVariable 和 @RequestBody?
- c# - 将对象值转换为 base64
- code-coverage - 为什么这个 Codecov 报告说我已经减少了我的覆盖率,而我不相信我有?
- ios - StackView 中有 2 个 UILabel 的垂直布局问题
- c# - 为什么 ConcurrentQueue 提供 TryPeek() 和 TryDequeue() 而 Queue 提供 Peek() 和 Dequeue()?
- android - RuntimeException : 宽度 (0) 和高度 (0) 不能 <= 0
- codeigniter-3 - Codeigniter:如何清理字符串?