总结:无法将命令自动化到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
无论如何,我可以在沙井上自动操作?
答案 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请求失败错误。