【问题标题】:Ping google.com to see if vpn-server is up, if down, reconnect to another oneping google.com 以查看 vpn-server 是否已启动,如果已关闭,请重新连接到另一个
【发布时间】:2021-04-10 18:44:27
【问题描述】:

我在 vps 上使用 VPN 服务器。我使用的 VPN 服务当然会因意外或其他原因而中断几分钟甚至几小时。如果发生这种情况,我想使用“vpnapp reconnect”命令快速重新连接到另一个 vpn 服务器。

有谁知道如何做一个 bash 脚本,我将通过 cronjob 每分钟运行一次:

  1. Ping google.com

2A) 如果可以到达,什么也不做

2B) 如果无法访问 - 这意味着 vpn 服务器已关闭/不工作 - 输入终端命令“vpnapp reconnect”,这将使 vpn 应用程序重新连接到他们提供的下一个可用服务器。

如果有人可以帮助我,将非常感激。我的编程知识为零。对我来说,这是纯粹的科学。

提前致谢。 奥斯基

【问题讨论】:

  • 为什么 ping Google 而不是你的 VPN 服务器?

标签: bash shell scripting cron debian


【解决方案1】:

可以这么简单吗?

if ping -c 4 google.com ; then exit ; else vpnapp reconnect ; fi

因此,如果收到 4 个包,意味着可以访问 google.com,它将退出 bash 脚本。

如果没有,那么它只会进入 vpnapp 重新连接 作为终端中的命令...重新连接 vpn。

还是需要将“vpnapp reconnect”嵌入“?

大声笑,我在这方面太弱了。无论如何,我真的不相信我自己的建议,所以很想听听真正的程序员说话。谢谢!!

【讨论】:

  • 既然你不需要then; .. else,就做if ! ping -c 4 google.com ; then vpnapp reconnect; fi
【解决方案2】:

您不需要 bash 脚本,只需添加这个 cron 作业(使用 crontab -e):

* * * * * ping -c2 google.com || vpnapp reconnect
  • * * * * * 每分钟运行一次命令。
  • ping -c2 google.com 向 google.com 发送 2 个 ping。
  • || vpnapp reconnect 表示如果 ping 失败,它将运行 vpnapp reconnect

【讨论】:

  • 哈哈!就在我回复自己的时候。非常感谢先生。非常感谢它! Linux 中可用的可能性令人惊叹。你几乎可以做任何事情。
  • 永远不要每分钟 ping Google 两到四次 - 请记住,ping 专为网络测试用例而设计,建议不要用于日常脚本任务,尤其是在自动化脚本中——执行简单的 DNS 查找来检查给定的 Internet 地址是否解析就足够了吗?一种可能是host -rt A example.com,但如果需要对请求进行更精细的控制,可以使用其他命令,如digdelv
  • 是的,但必须指定一个外部 dns 服务器,因为如果你有本地 dns 服务器缓存,即使没有互联网连接它也会返回结果(至少对于 dig,不知道其他 2 个) .默认情况下,几乎每个发行版都存在 Ping,但对于 dig、host 或 delv,情况并非如此。
猜你喜欢
  • 2021-05-28
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多