linux - 如果命令 "cat/dev/net/tun"结果 $string 那么

标签 linux bash if-statement openvpn tun

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

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 消息。

我用文本文件尝试了相同的脚本,它成功了...

最佳答案

因为输出是写在 stderr 上的,所以你可以使用:

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

|& 将上一个命令的标准输出和标准错误通过管道传输到管道中的下一个。

看起来你的 VPS 路径,即 /dev/net/tun 不再有效,cat 命令无法读取它。

关于linux - 如果命令 "cat/dev/net/tun"结果 $string 那么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27843975/

相关文章:

linux - 将一个变量一个一个地剪切到它的字段

linux - 共享内存的页面缓存

regex - sed 正则表达式提取字段并构建新的

bash - 在 Bash 中,每一段 "${BASH_SOURCE:-${(%):-%x}}"的含义是什么

java - 如何通过说字符串的一部分不等于字符串中的位置来使此 else-if 语句起作用?

linux - 如何获取其中包含多个目录的目录的链接数?

java - 使用 bash 文件时如何从 java 中的控制台获取参数?

mysql 验证和创建表时出错

python - 具有嵌套 if/else 条件的一个衬垫

java - 数据验证中的数据验证