インターフェイスが接続されていることを確認する簡単なスクリプトがあります。
connected=$(ping -I $1 -qc 1 8.8.8.8 \
&& echo "connected" \
|| echo "not connected")
echo "$connected" | tail -n1
私は単に「接続済み」または「接続されていない」を返す必要があると予想しました。実際にスクリプトを使用すると、常に出力前に警告が表示されます。
ping: Warning: source address might be selected on device other than enp0s25.
not connected
ここで警告はどうなりますか?サブシェルの一部ではないはずですか?
答え1
ping
警告は標準エラーとして送信されますが、捕捉されません。無視するには、/dev/null
明示的に次にリダイレクトします。
connected=$(ping -I $1 -qc 1 8.8.8.8 2>/dev/null \
&& echo "connected" \
|| echo "not connected")
echo "$connected" | tail -n1