使用Twisted的沙井编写脚本

Cha*_*Kut 5 twisted twisted.conch

简介:无法将命令自动化到Twisted的检修孔.寻求解决方案/建议.

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

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

ssh localhost -p 12345
Run Code Online (Sandbox Code Playgroud)

然后将用户放入可以访问正在运行的进程的Python解释器中.

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

ssh foo@bar.com 'ls'
Run Code Online (Sandbox Code Playgroud)

将在登录目录上执行'ls',然后ssh连接将关闭.

我想表现得像

ssh localhost -p 12345 'print "hello, world"'
Run Code Online (Sandbox Code Playgroud)

沙井,但我收到(用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
Run Code Online (Sandbox Code Playgroud)

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

Kon*_*sov 3

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

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

ssh -tt localhost -p 12345 << EOS
print "Hello world"
EOS
Run Code Online (Sandbox Code Playgroud)

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