web-dev-qa-db-ja.com

Cronジョブ-ジョブがまだ実行されていない場合、VPNを開始するためのスクリプトが必要です

私は1日中複数のビルドの参照として使用するミラーリポジトリを持っています。毎晩実行され、各リポジトリのリポジトリ同期を実行するcronジョブが必要です。私の問題は、VPNをアクティブにする必要があるリポジトリの一部です。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
2
Eric

Gnomeの nmcli Webサイトから:

$ 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>
1