Linux
用於檢查隧道是否存在的簡單 bash 腳本catching標準時間_out和d_標準時間_錯誤__C一種噸CH一世nGs噸d這在噸一種nds噸d和rrcatching stdout and stderr
我正在嘗試為 cronjob 編寫一個簡單的 bash 腳本,以檢查是否存在某些介面(隧道)。如果不是,我想啟動另一個(重新)啟動它們的腳本。我的問題是:我沒有讓“IF”工作:
#!bin/bash for i in tun1 tun2 tun3 tun3 tun4 tun5 do OUT="$(ip a show $i up)"; if [[ $OUT == *"does not exist."* ]]; then echo "$i is down" else echo "$i is up" fi done
目前輸出為:
./check_tunnel.sh
tun1 已啟動
tun2 已啟動
tun3 已啟動
tun3 已啟動
tun4 已啟動
設備“tun5”不存在。
tun5 已啟動
Device "tun5" does not exist.
列印到 stderr(標準錯誤)。您的腳本僅擷取標準輸出(標準輸出)。
您可以將 stderr 重定向到 stdout 以解決問題(尾隨
2>&1
)。OUT="$(ip a show $i up 2>&1)"