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

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

问题描述:

echo Something=Something > file 

我可以使用的paramiko的exec_command做catgrepls,但每当我试图修改它什么都不做的文件。在此之前我已经跑过su。该文件与运行该命令之前保持完全一样。为什么paramiko不能运行这个命令? (蟒蛇)

这是因为您必须为每个exec_command调用打开一个新通道。由于su命令与特定通道关联,因此会失去对su命令的认证。

您有几个选项。

  1. 运行与须藤命令,这可能是不可能的过度的paramiko
  2. 登录作为根,它不一定是一个好主意
  3. 使用invoke_shell()您的频道上,然后经由STD发送命令进入外壳

选项3允许与paramiko交互使用ssh,保持状态信息不变。这就是你需要的su命令。它还允许您在shell连接周围创建一个pexpect类型的包装,观察stdout管道是否显示事情已完成,并且可以通过stdin发送其他命令。注意填充和阻塞的管道,直到读取数据。