我的问题主要基于以下内容: 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>&-
应该终止会话,但不能终止会话,那么在我发送所有命令后如何终止会话?