Paramiko Exec_command 中出现 Unix CommandNotFound 错误
通过 Python 的 Paramiko exec_command 模块执行某些 Unix 命令(例如“sesu”)时,您可能会遇到以下问题:遇到“命令未找到”错误。出现此问题的原因是 exec_command 方法通常不在“登录”模式下运行,导致与标准交互式 SSH 会话相比,会获取一组不同的环境变量和启动脚本。
潜在解决方案:
1。指定命令的完整路径:
在 exec_command 参数中使用命令的完整路径。例如,“/bin/sesu test”而不是“sesu test”。您可以在交互式 SSH 会话中使用“which”命令确定完整路径。
2.调整启动脚本:
确保启动脚本(例如 .bash_profile)为交互式和非交互式会话统一设置 PATH 环境变量。
3.利用 --login 开关:
使用带有“--login”开关的登录 shell 运行命令,例如“bash --login -c “sesu test”。”
4。在命令中修改环境变量:
直接在命令本身内修改环境变量。在常见的 Unix 系统中,适用以下语法:“PATH="$PATH;/path/to/sesu" && sesu test.”
5.强制伪终端分配(不推荐):
使用 get_pty=True 参数为 exec 通道启用伪终端分配。但是,这种方法可能会导致意外结果。
其他注意事项:
请参阅以下资源以获取更多信息:
以上是如何解决 Python 的 Paramiko Exec_command 中的 Unix CommandNotFound 错误?的详细内容。更多信息请关注PHP中文网其他相关文章!