私TACACS+サーバーデバッグ情報をに送信します。このデバッグ情報から特定のデータをstderr
収集しようとしているので、次にstderr
リダイレクトしますstdout
。ただし、実行すると出力がまったく表示されないため、tac_plus -f /usr/local/etc/tac_plus.cfg 2>&1
実際には実行されないようです。一方、期待どおりに動作します。stdout
tac_plus -f /usr/local/etc/tac_plus.cfg 2>&1 | cat
( echo blah >&2 ) 2>&1 | tr 'a-z' 'A-Z'
$ ( echo blah >&2 ) 2>&1 | tr 'a-z' 'A-Z'
BLAH
$
誰かがこの動作を説明できますか?シェルはbashバージョン4.2.37です。
答え1
私たちが見ると源泉report()
メッセージを印刷するために使用される関数をstderrに書き込むかsyslog(3)
書き込むように設定できることがわかります。また、設定したログ記録のレベルによって異なります。コマンドが書き込みまたはsyslog呼び出しを実行しているかどうかを確認できます。たとえば、次のようになります。
strace -e write,connect -o /tmp/out tac_plus ...
tmpファイルで、類似または異なる数値を含む行を見つけます。おそらく、stdoutの場合は1、stderrの場合は2、ソケットを開いて書き込みを実行するため、3つ以上になる可能性がwrite(1,...
あります。syslog
connect()