0

SSH接続を確立し、いくつかのコマンドをリモートホストに送信して出力を読み取るzshスクリプトを作成しています。

私は次のようなことができます

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 を 2 つの fifo (パイプ) に結び付けようとしましたが、(echo を使用して) stdin パイプに書き込むと (echo プロセスが終了すると) EOF も送信され、1 つのコマンドを実行した後に接続が閉じられます。書かれた

ここでやろうとしていることを達成できるかどうか、またはどのように達成できるかについてのアイデアはありますか?

ありがとう。

4

1 に答える 1

2

chepner さん、コメントありがとうございます。

また、ssh の ControlMaster 機能も見つけました。 http://www.linuxjournal.com/content/speed-multiple-ssh-connections-same-server

構成ファイルでそれを構成しましたが、リモートコマンドごとに ssh を再度実行してもかまいません!

于 2013-10-28T19:50:35.317 に答える