Cron 作业 - 如果尚未运行,则需要脚本来启动 VPN

Cron 作业 - 如果尚未运行,则需要脚本来启动 VPN

我有镜像存储库,我将其用作全天多次构建的参考。我希望有一个 cron 作业,每晚运行并为每个存储库执行存储库同步。我的问题是某些存储库需要 VPN 处于活动状态 - 如果 VPN 尚未处于活动状态,我不想让它处于活动状态。

我使用的是 Ubuntu 18.04,安装了 network-manager-openconnect-gnome,并配置了 VPN,记住了凭据。我有 NetworkManager 和 nmcli 版本 1.10.6。我可以使用以下命令启动连接

nmcli con up <connection name>

但我不知道如何在打开之前确定VPN状态。


有了可接受的解决方案,我现在有:

#! /bin/bash

connection="<connection name>"

vpn_active=$(nmcli con show --active | grep "${connection}")

if [[ $vpn_active ]] ; then
    echo "VPN is active"
else
    echo "VPN is not active"
    nmcli con up "${connection}"
fi

pushd ~/disc2/repo.cache/

for dir in * ; do

    if [ -d "$dir" ]; then
        cd $dir
        pwd;
        repo sync;
        cd ..
    fi
done

popd

if [[ ! $vpn_active ]] ; then
    echo "stopping vpn"
    nmcli con down "${connection}"
fi

答案1

来自 Gnome 的命令行网站:

$ nmcli con show --active
NAME                UUID                                  TYPE             DEVICE  
TELUS1213-5G        a857583c-3f2a-4399-9fc6-3df74b0509f0  802-11-wireless  wlp60s0 
Wired connection 1  f1d049d0-ad20-3201-ac70-5cb8cc06a6e5  802-3-ethernet   enp59s0 

要测试特定连接是否处于活动状态,请使用:

nmcli con show --active <connection_name>

相关内容