小编Ibr*_*eem的帖子

使用命名管道控制 BASH 中的远程 ssh 会话

我的问题主要基于此 /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>&-应该终止会话,但它没有,那么在发送所有命令后如何终止会话?

ssh bash remote named-pipes file-descriptors

2
推荐指数
1
解决办法
3765
查看次数

标签 统计

bash ×1

file-descriptors ×1

named-pipes ×1

remote ×1

ssh ×1