SSHコマンドから不要な失敗メッセージを削除する方法は?

SSHコマンドから不要な失敗メッセージを削除する方法は?

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

これにより、実際のエラーが非表示になり、デバッグが困難になる可能性があります。

関連情報