SSH経由でstderrをファイルに直接送信する

SSH経由でstderrをファイルに直接送信する

私はローカルコンピュータでコマンドを実行し、SSHを介してstderrをリモートコンピュータに送信しようとしています。私はできません。

 ssh remote machine "command 2>stderr.log"

リモートコンピュータがコマンドを実行できるように正しく構築されていないため、ローカルコンピュータでコマンドを実行する必要があります。まだ試していませんが、基本的に私たちはできないと確信していますか2>ssh local machine /dir/stderr.log

ベストアンサー1

私が理解しているように、コマンドを実行したいと思います。地元のただし、stderr出力はリモートログファイルに保存されます。

努力するプロセスの交換:

local_command 2> >(ssh somemachine 'cat >logfile')

>(...)これはプロセスの交換。括弧内のコマンドに基づいてファイルに似たオブジェクトを作成します。したがって、2>stderrはファイルオブジェクトにリダイレクトされ、出力をリモートシステムに保存します。

または、単に既存のリダイレクトを使用してください。

{ local_command 2>&1 1>&3 | ssh somemachine 'cat >logfile'; } 3>&1

stderrはstdoutにリダイレクトされ、sshにパイプすることができます。 stdoutがsshに移動しないように、ファイルハンドル3にリダイレクトします。コマンドが終了すると、ファイルハンドル3がstdoutにリダイレクトされ、端末に表示されます。

おすすめ記事