断开连接时自动重新连接到VPN?

我是一个Ubuntu GNOME用户,我想知道是否有办法能够在断开连接时自动重新连接到VPN 。 我正在使用OpenVPN协议。

我已经彻底检查了网络管理器,但找不到这样的选项,只有连接到特定的WiFi才能连接到VPN。

OpenVPN具有内置机制,可自动检测死链接并重新连接。 在网络管理器中,转到“编辑连接”,选择您的VPN连接并选择“编辑”。 在“VPN”选项卡中,单击“高级…”并转到“常规”选项卡。 你有两个相关的选择:

“指定ping间隔”告诉OpenVPN检查链接是否仍然存在的频率。 “指定退出或重新启动ping”告诉它等待多长时间才能采取行动以及采取哪些行动。

示例:我的设置为“30 / ping-restart / 300”。 这意味着如果链接仍处于活动状态,OpenVPN每30秒检查一次。 如果链路停机300秒,则启动重启。

这样就不需要外部脚本……

经过一番挖掘后,我找到了这个答案 ,对它进行了测试(在Ubuntu GNOME 15.04上),到目前为止看起来很有效。

我唯一可以补充的是,一旦创建了脚本文件,就不一定需要将其保存到/ home文件夹中。 您可以将其保存在任何位置,使其可执行并将其添加到启动程序列表中。

在声称它是一个SMOP(简单编程问题)之后,我写了一个bash脚本来监视“Link Down”,然后执行一个用户脚本。 CPU使用率更低,响应时间比while true....sleep 30方法。 在这里查看我的答案。 这是关于“旋转WiFi连接”,但也可能适合你

此脚本将在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 

我认为基于其他答案的完整答案如下:

 #!/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