为什么paramiko不能运行这个命令? (蟒蛇)

时间:2011-06-07 17:10:09

标签: python ssh paramiko

echo Something=Something > file

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

1 个答案:

答案 0 :(得分:2)

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

你有几个选择。

  1. 使用sudo运行命令,这可能无法通过paramiko
  2. 运行
  3. 以root身份登录,这不一定是个好主意
  4. 在您的频道上使用invoke_shell(),然后通过std将命令发送到shell
  5. 选项3允许与paramiko交互使用ssh,保持状态信息不变。这就是su命令所需要的。它还允许您在shell连接周围创建一个pexpect类型的包装器,查看stdout管道以指示事情已完成,并且您可以通过stdin发送其他命令。在您阅读数据之前,请注意管道填满和阻塞。