栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 面试经验 > 面试问答

某些Unix命令以“ 找不到”,使用Python Paramiko exec_command执行时

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

某些Unix命令以“ 找不到”,使用Python Paramiko exec_command执行时

SSHClient.exec_command
默认情况下,不会在“登录”模式下运行壳和用于会话不分配一个伪终端。结果
.bash_profile
,与常规的交互式SSH会话相比,(可能)获得了(可能)获得了不同的启动脚本集(尤其是对于非交互式会话,而不是源)。基于
TERM
环境变量的存在/不存在,在脚本中采用和/或采用不同的分支。

可能的解决方案(按优先顺序):

  1. 修复命令,使其不依赖于特定环境。
    sesu
    在命令中使用完整路径。例如:
     /bin/sesu test

如果您不知道完整路径,则在常见的* nix系统上,可以

which sesu
在交互式SSH会话中使用command。

  1. 修复您的启动脚本,以便

    PATH
    为交互式和非交互式会话设置相同的脚本。

  2. 尝试通过登录外壳显式运行脚本(使用

    --login
    带有通用* nix外壳的开关):

     bash --login -c "sesu test"
  3. 如果命令本身依赖于特定的环境设置,并且您无法修复启动脚本,则可以在命令本身中更改环境。语法取决于远程系统和/或外壳。在常见的* nix系统中,这可以工作:

     PATH="$PATH;/path/to/sesu" && sesu test
  4. 另一种(不推荐)的方法是使用

    get_pty
    参数强制为“ exec”通道分配伪终端:

     stdin,stdout,stderr=ssh.exec_command('sesu test', get_pty=True)

使用伪终端自动执行命令会给您带来讨厌的副作用。例如,请参见例如,有没有一种简单的方法来摆脱使用Python的Paramiko库进行SSH并从远程计算机的CLI提取输出时出现的垃圾值?


您可能在

LD_LIBRARY_PATH
共享对象和查找方面存在类似的问题。



转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/640324.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号