我曾问过类似的问题,但解决方案似乎不适用于我的情况。
我正在尝试通过SSH进入节点计算机上的特定屏幕实例,然后执行一些命令
我当前的流程是这样的:
在远程计算机上,我创建一个屏幕实例:
screen -dmS "my_screen"
在我的本地计算机上,我执行以下操作:
ssh <user>@<remote> -a -x -t screen -x -r my_screen -X stuff 'ruby my_script.rb'
但输出仅为:
(ip)的连接已关闭。
并且ruby脚本没有运行。
如果我分开命令,那么脚本可以正确运行,例如:
ssh <user>@<remote> -a -x -t screen -x -r my_screen
它连接到屏幕,然后我手动输入:
ruby my_script.rb
exit
然后,脚本将按预期在屏幕上执行。
将命令发送到屏幕的正确方法是什么?
在第二个示例中,您正在通过在控制台中键入命令来执行命令。如果这是您要模拟的行为,则可以使用stuff
命令将screen
文本粘贴到控制台中以执行它。
ssh <user>@<remote> -a -x -t screen -x -r my_screen -X stuff \"ruby my_script.rb^M\"
(请注意,^ M是使用CTRL-V,CTRL-M生成的)。
这不会在打开的终端上显示任何内容,但是当您重新连接到屏幕时,您应该看到命令的输出(假设在您发送命令时屏幕位于控制台窗口中,这可能会带来风险)方法)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句