回答:
18.10以降(以前のバージョンではチェックできません)NetworkManagerのVPN接続には、vpn.persistent
手動で切断するまで、接続が失われたときにVPNに再接続するという設定があります。これは"no"
デフォルトで設定されており、残念ながらGnome Network Settingsでもnm-connection-editorでも公開されていません。
ただし、次のようにCLIを使用して設定できます。
nmcli connection modify <Your VPN connection name> vpn.persistent yes
もちろん、その前に接続が存在している必要があります。
OpenVPNには、デッドリンクを自動的に検出して再接続するための組み込みメカニズムがあります。Network Managerで[接続の編集]に移動し、VPN接続を選択して[編集]を選択します。「VPN」タブで「詳細...」をクリックし、「一般」タブに移動します。そこでは2つの関連オプションがあります。
「Specify ping interval」は、OpenVPNにリンクがまだ生きているかどうかをチェックする頻度を伝えます。「出口の指定またはpingの再開」は、アクションが実行されるまでの待機時間と実行するアクションを示します。
例:私の設定は「30 / ping-restart / 300」です。つまり、OpenVPNは、リンクがまだアクティブであるかどうかを30秒ごとにチェックします。リンクが300秒間ダウンすると、再起動が開始されます。
この方法では、外部スクリプトは必要ありません...
vpn.persistent
にyes
)。
このスクリプトは16.04で機能しますが、機能しnmcli con status
なくなります。
#!/bin/bash
CON="purple"
STATUS=`nmcli con show --active | grep purple | cut -f1 -d " "`
if [ -z "$STATUS" ]; then
nmcli con up $CON
fi
STATUS="$(nmcli con show -f name | grep purple)"
。または、実際の接続がアクティブかどうかを単に確認することもできますnmcli con show --active id 'purple'
他の答えに基づく完全な答えは次のようになると思います:
#!/bin/bash +x
while [ "true" ]
do
CON="Your-VPN-Name"
STATUS=`nmcli con show --active | grep $CON | cut -f1 -d " "`
if [ -z "$STATUS" ]; then
echo "Disconnected, trying to reconnect..."
(sleep 1s && nmcli con up $CON)
else
echo "Already connected !"
fi
sleep 30
done