Bash执行while循环以检查Fedora 30中与nmcli的VPN连接

时间:2019-08-17 11:48:46

标签: bash shell while-loop fedora networkmanager

我正在编写我的第一个bash脚本,以检查是否使用nmcli连接了vpn,但是它仍然无法识别断开连接。

这很简单:

PIAUUID="e53d9304-bde2-40e1-8f57-a3fa7115a383"

nmcli con up $PIAUUID

while [ "true" ]
  do
    if [[ $(nmcli con | grep -m 1 "$PIAUUID" | cut -b 26-61) != $PIAUUID ]]; then
            printf  "Disconnected at $(date +'%m/%d/%Y %I:%M:%S') trying to reconnect"
            (sleep 1s && nmcli con up $PIAUUID)
    else
            echo "Connected - checked at $(date +'%m/%d/%Y %I:%M:%S')"
    fi
    sleep 30
done > monitor.log

所有变量,连接信息等都包含在外部文件中。仅应确保此do-while循环确保从nmcli获得的UUID与提供的用于标识连接参数文件的UUID相同。

假定是,如果它们不相同,则nmcli将不会连接到VPN,它将尝试重新连接。

但是,如果我运行脚本,然后在VPN运行时断开与VPN的连接,它将无法识别。因此,以某种方式测试两个UUID的相等性是行不通的。

0 个答案:

没有答案