【问题标题】:Why can't paramiko run this command? (Python)为什么 paramiko 不能运行这个命令? (Python)
【发布时间】:2011-07-05 22:12:22
【问题描述】:
echo Something=Something > file

我可以使用 paramiko 的 exec_command 来执行 catgrepls,但每当我尝试修改文件时,它什么也不做。在此之前我已经跑过su。该文件与运行命令之前完全相同。

【问题讨论】:

    标签: python ssh paramiko


    【解决方案1】:

    这是因为您必须为每个 exec_command 调用打开一个新通道。这会丢失 su 命令的身份验证,因为它与特定通道相关联。

    你有几个选择。

    1. 使用 sudo 运行命令,这可能无法通过 paramiko 实现
    2. 以 root 身份登录,这不一定是个好主意
    3. 在您的频道上使用 invoke_shell(),然后通过 std in 向 shell 发送命令

    选项 3 允许将 ssh 与 paramiko 交互使用,保持状态信息不变。这就是 su 命令所需要的。它还允许您围绕您的 shell 连接创建一个 pexpect 类型的包装器,观察标准输出管道以了解事情已经完成的迹象,并且您可以通过标准输入发送其他命令。在您读取数据之前,请注意管道填充和阻塞。

    【讨论】:

      猜你喜欢
      • 2020-11-04
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      相关资源
      最近更新 更多