运行bash命令并远程模拟按键

时间:2018-10-31 00:02:57

标签: node.js bash terminal sh tty

在NodeJS中,我可以使用spawn().stdout生成一个进程并听其标准输出。我正在尝试创建一个将与此外壳进行交互的在线终端。我不知道如何将击键发送到Shell进程。

我已经尝试过了:

echo -e "ls\n" > /proc/{bash pid}/fd/0

除了输出ls和换行符之外,这实际上没有做任何其他事情。而且,当我尝试tail -f /proc/{bash pid}/fd/0时,我什至无法将击键发送到打开的bash终端。

我真的只是在弄乱试图了解bash进程将如何解释ENTER键。我不知道这是否通过stdin完成,因为换行符不起作用。

1 个答案:

答案 0 :(得分:0)

我认为您无法以任何有意义的方式“遥控”已经开始的常规Bash会话。您可以做的是启动一个新外壳程序,该外壳程序将从named pipe中读取;然后您可以写入该管道以运行命令:

$ cd "$(mktemp --directory)"
$ mkfifo pipe1
$ bash < pipe1 &
$ echo touch foo > pipe1
[1]+  Done                    bash < pipe1
$ ls
foo  pipe1

有关更多详细信息,请参见How to write several times to a fifo without having to reopen it?