用Twisted的沙井编写脚本

时间:2015-08-27 16:10:05

标签: twisted twisted.conch

总结:无法将命令自动化到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 verbose):

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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