在远程屏幕上执行命令

在远程屏幕上执行命令

在远程服务器上,我打开了多个屏幕,并且将每个屏幕用于不同的目的。例如,ID 为“build”的屏幕用于编译某些程序。我可以随时打开该屏幕,使用:

 ssh myserver -t screen -r build

但是,我想直接从我的主机在远程屏幕上执行命令。例如,我想ls在远程build屏幕中执行操作。我尝试过类似的事情:

 ssh myserver -t screen -r build -X ls .

但没有任何运气。

有任何想法吗?这可能吗?

谢谢!

编辑:我的实际用例:

./buildSomethingOnRemoteScreen() && ./fetchTheBuiltOutputAndDoSomethingWithIt()

答案1

您可以使用粘贴命令执行任何脚本:

# read script into register p
ssh hostname screen -S build -X readreg p script_on_the_host
# paste contents of register p into running screen session
ssh hostname screen -S build -X paste p

答案2

我在服务器上使用 tmux (比 screen 更灵活),并在连接后直接执行命令:

ssh myserver -t 'tmux send-keys -t session-name "ls ./" C-m; tmux attach -t session-name '

您只需确保有一个以会话名称运行的会话。输入“ls ./”后,Cm 会模拟 ENTER

答案3

在远程屏幕上执行命令的示例:

ssh myserver -t screen -S build -X stuff "ls .\n"

-X选项传递屏幕特定命令。其中一个命令就是stuff简单地将给定字符串放入(填充)窗口的输入缓冲区中。如果省略换行符,则不会输入命令(与忘记按 Enter 键相同)。串行终端可能需要输入命令\r而不是命令。\n

使用时,如果有多个运行,-X则需要指定会话名称。-S

使用时-X您可以使用 预选窗口-p。否则使用活动的。

如果命令存储在文件中或者串行终端速度较慢且需要 的效果,则使用readreg/register和命令是可行的。pasteslowpaste

相关内容