Python twisted ssh client:发送10个命令后的客户端块

时间:2016-12-21 16:09:51

标签: twisted twisted.conch

我最近开始使用twisted,我正在尝试创建一个连接并向SSH服务器发送命令的客户端。 (我只创建客户端并使用一些SSH服务器来测试它)。 发送10个命令(例如' ls'命令)并接收每个命令的答案后,我的客户端被阻止。有人可以帮我找到解决方案吗?这是我客户最重要的部分。 PS:我正在使用twisted 12.0.0(msi二进制文件)。

.eml

1 个答案:

答案 0 :(得分:0)

问题是服务器阻止了会话号10:  " [在SimpleTransport上的SSHService ssh-connection上的SSHChannel会话(10),客户端]另一方拒绝打开         原因:('打开失败',1)"。 这是正常行为,(sshd_config中的MaxSessions指定每个网络连接允许的最大打开会话数设置为10)。

SSHChannel在运行命令后总是自行关闭。因此,在旧通道关闭后,应为新命令创建新通道。以下是我的客户最重要的部分:

class SimpleConnection(connection.SSHConnection):
    def serviceStarted(self):
        self.openChannel(CommandChannel(conn=self)) 

class CommandChannel(channel.SSHChannel):
    name = 'session'
    def channelOpen(self, data): 
        global command
        command = "ls"
        d = self.conn.sendRequest(self, 'exec', common.NS(command), wantReply=True) 
        d.addCallback(self.dataReceived) 
    def dataReceived(self, data):  
        print (data)
    def closed(self):
        self.conn.serviceStarted()