从外部将输入发送到屏幕会话

从外部将输入发送到屏幕会话

我的场景是这样的:

我有一个在远程位置运行的屏幕会话。该屏幕内是一个基于控制台的程序。当没有屏幕运行时,该程序在终端中启动并接受其标准输入上的命令。

我想要的是一种远程发送命令到屏幕的方法,以便控制台程序接收该命令。也许是这样的:

我的电脑 -> SSH 自动发送消息 -> 屏幕会话 -> 程序(收到运行命令)

因此,我可以从远程 PC 通过 SSH 命令发送到屏幕,屏幕再将它们发送到程序。程序接受它们并执行它们。

答案1

如果我理解正确,您想将输入发送到屏幕会话内运行的程序。您可以使用 screenstuff命令来完成此操作。使用 screen 的-X选项在 screen 会话中执行命令而不附加到它。

screen -S sessionname -p windowname -X stuff 'command1
command2
'

如果您想查看程序的输出,请参阅hardcopyloglogfile命令。

答案2

要将命令发送到分离的屏幕:

screen -S <screen_name> -X stuff "command blah blah blah\n"
  • 确保命令末尾有“\n”。如果不附加“\n”,则命令将被发送但不会启动。

边注:如果您想离开当前所在的目录而不结束它screen,请使用以下键绑定快捷键来分离它:( )ctrl + a + dC-a-d

相关内容