我开始学习twisted.conch来通过SSH自动执行某些任务。
I tried to modify
来自http://www.devshed.com/c/a/Python/SSH-with-Twisted/4/的示例sshclient.py。登录后运行1命令并打印捕获的输出。
What I wanted to do
是运行一系列命令,也许根据输出决定做什么。
The problem I ran into
是 twisted.conch.ssh.channel.SSHChannel 在运行命令后似乎总是关闭自己(例如 df -h ) 。该示例将在 channelOpen 之后 sendRequest 。然后,无论我做什么, dataReceived 之后,频道总是关闭。
我想知道这是否是由于服务器在命令后发送EOF。因此必须关闭此频道?我应该为多个命令打开多个通道吗?
Another problem is
这些交互式命令(例如 rm -i somefile )。似乎因为服务器没有发送EOF, SSHChannel.dataReceived 永远不会被调用。如何在这种情况下设法捕获输出,以及如何发回响应?
答案 0 :(得分:2)
我应该为多个命令打开多个通道吗?
是的。这就是SSH的工作原理。
SSHChannel.dataReceived永远不会被调用
这听起来不应该发生什么。也许你可以包含一个再现行为的最小例子。