Bash脚本(或多或少)可靠地检查Internet是否已启动

Joã*_*ela 10 linux shell internet-connection

我需要一个Bash(或一个普通的shell)脚本来放入一个cronjob,每分钟检查一下Internet是否正常运行.

我就这样做了:

#! /bin/sh

host1=google.com
host2=wikipedia.org
curr_date=`date +"%Y%m%d%H%M"`

echo -n "${curr_date};"
((ping -w5 -c3 $host1 || ping -w5 -c3 $host2) > /dev/null 2>&1) && 
echo "up" || (echo "down" && exit 1)
Run Code Online (Sandbox Code Playgroud)

你会怎么做?你会ping哪个主机?

澄清:

  • 通过" 互联网上升 ",我的意思是我的互联网连接.

  • 通过" up ",我的意思是拥有可用的连接(如果我们正在谈论DNS正在关闭或者连接真的很慢,那么这并不重要[请注意-w超时]).这也是我没有包含任何IP而只包含主机的原因.

我还应该ping Stack Overflow吗?我的意思是,如果我无法访问谷歌,维基百科或Stack Overflow,我不想要互联网:p

Emi*_*röm 5

那个似乎是一个很好的解决方案.只需添加一些主机,也许还有一些纯IP主机,这样您就不会依赖DNS功能(这本身取决于您对"up"的定义).