0

再会。我很抱歉要求一些明显的东西,因为我正在用 PHP 编写,并且我对 Python 的了解处于“我昨天开始学习这个”的水平。我已经为此花了几天时间-但无济于事。我从这里下载了版本 20.3 的 SSH 服务器的扭曲示例https://docs.twistedmatrix.com/en/twisted-20.3.0/conch/examples/。第 162 行有一个 execCommand 方法,我需要实现它才能使其工作。然后我注意到这个方法中有一条评论“我们不支持命令执行会话”。因此,问题是:此评论仅适用于示例,还是完全适用于扭曲的库。即,是否可以实现此方法以使示例服务器按我的需要工作?

更多信息。我认为不需要这些信息来回答我上面的问题。为什么我需要它?我正在尝试编译一个用于编写功能(!)测试的环境(我猜单元测试不会有这样的问题)。我们的 API 使用 SSH 客户端 (phpseclib / SSH2) 超过 30% 的端点。无论我做什么,根据我如何实现此方法,我只有 3 个结果选项:(结果:成功,响应:“” - 空;结果:成功,响应:“1”;结果:失败,响应:“ Unable to fulfill channel request at… SSH2.php:3853”)。这些是针对 SSH2 客户端的。如果发生错误(第三种情况),服务器会在终端中显示日志:

[SSHServerTransport, 0,127.0.0.1] Got remote error, code 11 reason: ""
[SSHServerTransport, 0,127.0.0.1] connection lost
4

1 回答 1

1

我刚刚发现这有效:

def execCommand(self, protocol, cmd):
    protocol.write('Some text to return')
    protocol.session.conn.sendEOF(protocol.session)

如果我不发送 EOF,客户端会抛出超时错误。

于 2021-07-07T18:48:52.017 回答