首页  >  文章  >  后端开发  >  为什么某些 Unix 命令在 Python 的 Paramiko Exec_Command 中返回“未找到”错误?

为什么某些 Unix 命令在 Python 的 Paramiko Exec_Command 中返回“未找到”错误?

DDD
DDD原创
2024-10-21 06:57:02362浏览

Why Do Some Unix Commands Return

Python 的 Paramiko 中的 Unix 命令出现“未找到”错误

尝试使用 Python 在 Unix 服务器上执行命令“sesu”时Paramiko exec_command 时,用户可能会遇到错误消息“sh: sesu: not found”。此问题仅在某些命令(例如“sesu”)中出现,而其他命令(例如“ls”)可以按预期运行。

此错误源于 SSHClient.exec_command 中的默认行为,该行为不会运行shell 处于“登录”模式并且不分配伪终端。因此,命令执行可能与交互式 SSH 会话不同,后者会获取或使用某些启动脚本和环境变量。

可能的解决方案

建议使用以下解决方案按优先顺序排列:

  • 修改命令以指定可执行文件的完整路径:
/bin/sesu test
  • 配置启动脚本以一致地设置 PATH:
  • 通过登录 shell 显式运行命令:
bash --login -c "sesu test"
  • 更改命令本身内的环境:
PATH="$PATH;/path/to/sesu" && sesu test
  • 作为最后的手段(不推荐):
stdin,stdout,stderr = ssh.exec_command('sesu test', get_pty=True)

以上是为什么某些 Unix 命令在 Python 的 Paramiko Exec_Command 中返回“未找到”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn