5

摘要:无法自动向 Twisted 的沙井发出命令。寻求解决方案/建议。

Twisted 有一个很棒的功能,叫做沙井。它允许用户通过 ssh 连接到当前运行的 Twisted 服务器并检查/与其内部交互。

我想用这个做一些脚本。连接沙井只需要

ssh localhost -p 12345

然后用户被放入一个可以访问正在运行的进程的 Python 解释器中。

通常使用 ssh 可以在远程服务器上运行命令并退出,例如

ssh foo@bar.com 'ls'

将在登录目录上执行“ls”,然后 ssh 连接将关闭。

我想执行类似的操作

ssh localhost -p 12345 'print "hello, world"'

到沙井,但我收到(使用 ssh 详细):

debug1: Authentication succeeded (password).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug1: Sending command: print "Hello world"
exec request failed on channel 0

无论如何,我可以在沙井上自动化操作吗?

4

1 回答 1

3

失败的原因ssh localhost -p 12345 print 'Hello world'是“print 'Hello world'”作为应该执行命令的“exec”请求发送。您的服务器(沙井)不支持(显然)。

您需要改为提供 python 解释器标准输入。例如:

ssh -tt localhost -p 12345 << EOS
print "Hello world"
EOS

注意 -tt 标志 - 无论您的输入设备不是 tty,它都会强制 ssh 分配 tty。如果没有 -tt,您将收到“通道上的 shell 请求失败”错误。

于 2015-09-02T09:49:21.753 回答