使用命名管道

时间:2019-03-28 18:38:03

标签: bash ssh named-pipes file-descriptor

我的问题主要基于以下内容: pipe timely commands to ssh

我正在关注上述问题,并且能够连接到服务器,如下所示:

mkfifo CMDs.txt
exec 7> CMDs.txt

然后从另一个终端连接到服务器,如下所示:

sshpass -p 'mypass' ssh -tt myuser@${IP} < CMDs.txt 

会话已建立,但它不是交互式会话(应该如此)。但是我可以通过将命令重定向到文件描述符7来将命令发送到远程服务器,例如:

echo "some command" >&7 
echo "some more command" >&7 

这可以正常工作,并在我发起会话的另一个终端中显示输出。我的目标是发送命令,并在变量中捕获每个命令的输出,以便在发送另一个命令之前可以对其进行分析。我认为应该可以通过阅读标准输出来解决,但我无法弄清楚,因此提出了问题。通过重定向到这样的文件中,我可以捕获文件中的输出:

sshpass -p 'mypass' ssh -tt myuser@${IP} < CMDs.txt >>outfile.txt

也如参考问题中所述,exec 7>&-应该终止会话,但不能终止会话,那么在我发送所有命令后如何终止会话?

0 个答案:

没有答案