如果命令" cat / dev / net / tun"结果$ string然后

时间:2015-01-08 15:43:14

标签: linux bash if-statement openvpn tun

我正在创建一个脚本,用于检查VPS是否启用了TUN驱动程序。 check命令是:

cat /dev/net/tun

如果它返回:

cat: /dev/net/tun: File descriptor in bad state

模块已启用。否则返回ERROR。

这是我的剧本:

tunstring="File descriptor in bad state"
if cat /dev/net/tun | grep -q "$tunstring"; then
    echo "GOOOOOD"
else
    echo "ERROR"
fi

我收到ERROR条消息。

我尝试使用文本文件创建相同的脚本,但它有效...

1 个答案:

答案 0 :(得分:3)

由于输出是在stderr上写的,你可以使用:

tunstring="File descriptor in bad state"
if cat /dev/net/tun |& grep -q "$tunstring"; then
    echo "GOOOOOD"
else
    echo "ERROR"
fi

|&将前一个命令的stdout和stderr传递给管道中的下一个。

看起来您的VPS路径/dev/net/tun已无效,cat命令无法读取它。