首页 > 后端开发 > Python教程 > 如何解决 Python 的 Paramiko Exec_command 中的 Unix CommandNotFound 错误?

如何解决 Python 的 Paramiko Exec_command 中的 Unix CommandNotFound 错误?

Barbara Streisand
发布: 2024-10-21 07:02:02
原创
808 人浏览过

How to Resolve Unix CommandNotFound Error in Python's Paramiko Exec_command?

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 通道启用伪终端分配。但是,这种方法可能会导致意外结果。

其他注意事项:

  • LD_LIBRARY_PATH 环境变量和共享对象的位置可能会出现类似问题。
  • 请参阅以下资源以获取更多信息:

    • 使用 Paramiko 时的环境变量差异
    • 某些 Unix 命令失败并显示“...未找到” " 当使用 JSch
通过 Java 执行时

以上是如何解决 Python 的 Paramiko Exec_command 中的 Unix CommandNotFound 错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板