简单的 bash 脚本来检查隧道是否存在

简单的 bash 脚本来检查隧道是否存在

我正在尝试为 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

当前输出为:

检查隧道

tun1 已启动

tun2 已启动

tun3 已启动

tun3 已启动

tun4 已启动

设备“tun5”不存在。

tun5 已启动

答案1

Device "tun5" does not exist.打印到 stderr (标准错误)。
您的脚本仅捕获 stdout (标准输出)。

您可以将 stderr 重定向到 stdout 来解决问题(尾随2>&1)。

OUT="$(ip a show $i up 2>&1)"

相关内容