我的问题主要基于此 /sf/ask/1573574201/?rq=1
我遵循上述问题,并且能够连接到服务器,如下所示:
mkfifo CMDs.txt
exec 7> CMDs.txt
Run Code Online (Sandbox Code Playgroud)
然后从另一个终端我连接到服务器,如下所示:
sshpass -p 'mypass' ssh -tt myuser@${IP} < CMDs.txt
Run Code Online (Sandbox Code Playgroud)
会话已建立,但它不是交互式会话(它应该是)。但我可以通过将命令重定向到文件描述符 7 来将命令发送到远程服务器,如下所示:
echo "some command" >&7
echo "some more command" >&7
Run Code Online (Sandbox Code Playgroud)
这工作正常并显示我启动会话的另一个终端中的输出。我的目标是发送命令,并捕获变量中每个命令的输出,以便我可以在发送另一个命令之前对其进行分析。我认为通过阅读标准输出应该可以实现,但我无法弄清楚,因此发布了问题。我可以通过将输出重定向到文件中来捕获文件中的输出,如下所示:
sshpass -p 'mypass' ssh -tt myuser@${IP} < CMDs.txt >>outfile.txt
Run Code Online (Sandbox Code Playgroud)
也如参考问题中提到的,exec 7>&-应该终止会话,但它没有,那么在发送所有命令后如何终止会话?