我有镜像存储库,我将其用作全天多次构建的参考。我希望有一个 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>