为什么paramiko不能运行这个命令? (蟒蛇)
问题描述:
echo Something=Something > file
我可以使用的paramiko的exec_command做cat
,grep
和ls
,但每当我试图修改它什么都不做的文件。在此之前我已经跑过su
。该文件与运行该命令之前保持完全一样。为什么paramiko不能运行这个命令? (蟒蛇)
答
这是因为您必须为每个exec_command调用打开一个新通道。由于su命令与特定通道关联,因此会失去对su命令的认证。
您有几个选项。
- 运行与须藤命令,这可能是不可能的过度的paramiko
- 登录作为根,它不一定是一个好主意
- 使用invoke_shell()您的频道上,然后经由STD发送命令进入外壳
选项3允许与paramiko交互使用ssh,保持状态信息不变。这就是你需要的su命令。它还允许您在shell连接周围创建一个pexpect类型的包装,观察stdout管道是否显示事情已完成,并且可以通过stdin发送其他命令。注意填充和阻塞的管道,直到读取数据。