首页  >  文章  >  后端开发  >  如何解决 Unix 命令的 Paramiko exec_command 中的“未找到命令”错误?

如何解决 Unix 命令的 Paramiko exec_command 中的“未找到命令”错误?

Patricia Arquette
Patricia Arquette原创
2024-10-21 07:00:03447浏览

How to Resolve

使用 Paramiko 的 exec_command 时,Unix 命令失败并显示“未找到命令”错误

在“sesu”等 Unix 命令失败并显示“通过 Python 的 Paramiko exec_command 执行时出现“command not found”错误,根本原因可能在于 SSHClient.exec_command 的默认行为。

了解默认行为

SSHClient。 exec_command 通常不在“登录”模式下运行或为会话分配伪终端。因此,它可能会绕过交互式 SSH 会话期间调用的某些启动脚本。这种差异可能会导致环境变量和脚本分支与常规交互式会话不同。

解决问题

要解决此问题,请考虑以下解决方案:

  1. 指定命令的完整路径:不要依赖 PATH,而是使用命令的完整路径,例如“/bin/sesu test。”
  2. 修改启动脚本: 确保启动脚本为交互式和非交互式会话设置一致的 PATH。
  3. 通过登录 Shell 运行命令: 使用“- -login" 开关以通过登录 shell 显式执行命令,例如,"bash --login -c "sesu test"。"
  4. 修改命令环境: 更改其中的环境命令本身,确保正确设置基本变量。
  5. 强制伪终端分配(不推荐):将“get_pty”参数设置为 True 为 exec 通道分配伪终端。然而,这种方法可能会产生意想不到的后果。

以上是如何解决 Unix 命令的 Paramiko exec_command 中的“未找到命令”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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