【发布时间】:2010-11-30 14:43:34
【问题描述】:
我开始学习 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 永远不会被调用。在这种情况下,我如何设法捕获输出,以及如何发回响应?
【问题讨论】:
-
我想澄清一下,“运行一系列命令”类似于 expect 命令