sshコマンド中にlunが見つからなかったときに受信したコンソールにメッセージが印刷されないようにします。 SSH は NetApp ファイラーで使用されます。コマンドがSolaris 10ホストで実行されています。
私が実行しているいくつかのコードは次のとおりです。
for filer in <list>
do
echo $filer
ssh $filer lun show <lunpath> |grep vol
...
done
LUNが見つかった場合、コードは正しく機能しますが、LUNが見つからない場合、SSHコマンドは "lun show:no such LUN presents"を返します。
-v バリアントを含む複数の grep および egrep コマンドを試しましたが、まだ「lun show: 対応する LUN がありません」というメッセージがコンソールに出力されます。
この行をコンソールに印刷することをスキップするにはどうすればよいですか?
ベストアンサー1
最新のSSHは、リモートホストからstdoutとstderrを2つの異なるストリームに戻すようです。
stdout と stderr を結合するフィルタを作成するには、次のようにします。
ssh $filer lun show <lunpath> 2>&1 |grep vol
stderrを別々のファイルに送信するには、次のようにします。
ssh $filer lun show <lunpath> 2>lun.show.stderr |grep vol
if [ -s lun.show.stderr ]; then
# there was some stderr output
grep -v "No such LUN exists" lun.show.stderr
fi
標準エラーの削除:
ssh $filer lun show <lunpath> 2>/dev/null | grep vol
これにより、実際のエラーが非表示になり、デバッグが困難になる可能性があります。