2010-12-01 7 views
3

私はfd = 3のデータとstdoutとstderrの興味深いデータを大量に生成するリモートホスト上にbashスクリプトを持っています。私はしたい:sshを介して3本のデータパイプを送るには?

  1. 私のローカルマシンのファイルにstdoutとstderrを記録する。
  2. ローカルマシン上のfd = 3のデータをstdoutに書き込みます。

    
    exec 3> >(cat) 
    ./big_script.sh -o /dev/fd/3 2>&1 >big_script.log 
    exec 3>&- 
    

    しかし、私は、リモートマシン上でbig_script.sh実行し、すべての3本のパイプ(FD = 1、FDを持つようにしたい。ここでは

は私の大きなスクリプトがローカルであれば、それは行うことができる方法です= 2、fd = 3)がsshプログラムから別々に出てきます。それには最善の方法は何ですか?

答えて

0

SSHはただ1つのttyを開くので、すべてのデータを持つ単一のストリームを取得できます。あなたは、stdoutとstderrと見なされる反対側に何があったのか分からない。

0

リモートホスト上のファイルにログしてから、ローカルマシンのログファイルをそれぞれssh remote tail -fにすることができます。

2

nc(netcat)とトンネル?この方法であなたのネット上にちょっとしたログラジオを作ることができます!

+0

これは非常に魅力的な選択肢です。私には小さな問題が1つあります。実際にはローカルマシン上にbig_script.shを呼び出すいくつかのプロセスがあります。トンネルを構築してリモートマシン上で同じポートを使用しないようにするにはどうすればよいですか? – User1

+0

おそらくnetstat -lnptとgrepがすでに使用されていますか?それはおそらく複数の接続で長いスクリプトを作成するでしょう...あなたは同時実行性を管理する必要があると言っていません –

+0

netcat?古い。 socatを使用します。 – user502515

関連する問題