0

我正在编写一个 zsh 脚本,我想在其中建立 SSH 连接,向远程主机发送一些命令并读取输出。

我可以做类似的事情

cat commands.list | ssh foobar.com | { process output }

但是,这将一次性执行并且连接将关闭。相反,我想做类似的事情 -

while [ some condition ]; do
    write command to ssh process
    read output from ssh process
    make some decision about the next command to write to ssh process
do 

我已经查看了zsh 重定向zsh 进程替换,但无法弄清楚如何在这里准确地使用它们来发挥我的优势。

有一个 <(..) 形式的进程替换用于读取和一个 >(..) 形式用于写入,但没有我可以同时读写的形式。如果有一个我可以将进程绑定到自定义文件描述符?

我还尝试将 ssh 进程的 stdin 和 stdout 绑定到两个 fifo(管道),但是(使用 echo)写入 stdin 管道也会发送一个 EOF(当 echo 进程结束时),在执行一个命令后关闭连接书面

如果/我可以在这里实现我想要做的事情,有什么想法吗?

谢谢。

4

1 回答 1

2

谢谢你的评论。

我还发现了 ssh 的 ControlMaster 功能。 http://www.linuxjournal.com/content/speed-multiple-ssh-connections-same-server

在我的配置文件中进行了配置,我不介意为每个远程命令再次运行 ssh!

于 2013-10-28T19:50:35.317 回答