使用通道进行多个命令,回复和交互式命令?

时间:2010-11-30 04:24:47

标签: python ssh twisted

我开始学习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 永远不会被调用。如何在这种情况下设法捕获输出,以及如何发回响应?

1 个答案:

答案 0 :(得分:2)

  

我应该为多个命令打开多个通道吗?

是的。这就是SSH的工作原理。

  

SSHChannel.dataReceived永远不会被调用

这听起来不应该发生什么。也许你可以包含一个再现行为的最小例子。