使用twisted.conch
,我正在使用以下SSHChannel
实现,该实现在实例化时提供要运行的命令:
class CommandChannel(channel.SSHChannel):
name = 'session'
def __init__(self, command, *args, **kwargs):
channel.SSHChannel.__init__(self, *args, **kwargs)
self.command = command
def channelOpen(self, data):
d = self.conn.sendRequest(
self, 'exec', common.NS(self.command), wantReply=True)
d.addCallback(self._gotResponse)
def _gotResponse(self, _):
self.conn.sendEOF(self)
self.loseConnection()
def dataReceived(self, data):
log.msg('dataReceived: data=%r' % data)
def extReceived(self, dataType, data):
log.msg('extReceived: dataType=%r, data=%r' % (dataType, data))
def closed(self):
reactor.stop()
为此,我提供了一个应该返回某种退出状态的 shell 命令。我可以阅读退出状态吗?我曾希望extReceived
可能是我的方式,但它看起来不像。
在我的日志中,我看到了这一点,这似乎应该是一个提示,但我不确定如何遵循所说的提示:
2013-04-05 10:39:37-0400 [SSHChannel session (0) on SSHService ssh-connection
on CommandTransport,client] unhandled request for exit-status