bash
スクリプトでは、conntrack
同じツールを使用してtcpdump
結果をファイルに出力しますが、コマンド/スクリプトを実行した後にコマンドラインの最初の出力行に表示される標準メッセージを非表示にしたいと思います。
情報:
conntrack v1.0.0 (conntrack-tools): 6 flow entries have been shown.
マニュアルページを読んだ後、bash
次のことを試しました。
conntrack -L|grep "dport=6439" &> /tmp/file
どのリダイレクトオプションを試しても、スクリプトを実行しているconntrack
シェルにはフローエントリの数を示すメッセージが常に表示されます。tcpdump
キャプチャデバイスとキャプチャされたパケット数などが一覧表示される場所も同じです。
もちろん、clear
出力をすばやく隠すためにorコマンドの後に追加することもできますが、その解決策は見苦しいです。conntrack
tcpdump
そのようなメッセージを隠す方法は?
ベストアンサー1
これらのメッセージは、通常の出力(stdout)ではなくエラー(stderr)として印刷されます。
stderrは送信されず、stdoutのみが送信されます。したがって、&> /tmp/file
grepによると、独自のstdout出力とstderr出力のみをマージし、grep
stderrはマージしません。conntrack
たとえば、次のようなものが必要です。
conntrack -L 2>&1 | grep "dport=6439" > /tmp/file
stderr はファイル記述子 2、stdout はファイル記述子 1 です。2>&1
stderrをstdoutにマージします。
続行すると、出力がにパイプされる前にマージされ2>&1
ます。再マージする必要はありません。conntrack
grep
grep