我想写一个简单的bash脚本的cronjob来检查是否有一些接口(隧道)exsisting。 如果不是,我想开始另一个脚本,(重新)启动它们。 我的问题是:我没有得到“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已启动
- 如何确保在bash会话中为用户设置环境variables?
- 保护bash脚本
- bash单线循环遍历目录抛出错误
- Linux命令提示符 – Ctrl + r – 不能正常工作
- 删除指定date之前的所有文件夹,但其中一些文件夹除外
tun2已启动
tun3已经启动了
tun3已经启动了
tun4已经结束
设备“tun5”不存在。
tun5已经结束了
Device "tun5" does not exist. 打印到stderr(标准错误)。
你的脚本只捕捉stdout(标准输出)。
您可能会将stderrredirect到stdout以解决问题(尾随2>&1 )。
OUT="$(ip a show $i up 2>&1)"