如何清理/刷新网站存储的 IP 信息?

如何清理/刷新网站存储的 IP 信息?

我正在尝试使用 shell 脚本检查我是否已连接到互联网。我认为我可以通过使用来做到这一点命令,因为如果 ping 成功,括号内会有 IP 信息。如果没有括号,那么我使用命令分配一个特定变量,如果是这种情况,该变量将变为空。

所以我写了下面的代码:

echo " First check whether internet is working or not  : "
internetCheck=$(ping -c 1 google.com | cut -s -d "(" -f1)
if [ -z "$internetCheck" ]; then 
  echo "NO INTERNET CONNECTION FOUND !"
else 
  echo "[ OK ] Internet is connected.\n"
fi

它起作用了。但是,当我关闭连接,并且当我对同一网站(google.com)重复该脚本时,系统(?)会记住最后一个 ping 命令的结果,因此会失败。如何清理/刷新之前的 ping 结果?

答案1

更好的测试,不需要 grep ...

echo " First check whether internet is working or not  : "
if ping -q -c 1 <host> > /dev/null 2>&1 ; then
  echo "[ OK ] Internet is connected.\n"
else 
  echo "NO INTERNET CONNECTION FOUND !"
fi

答案2

将名称转换为 IP 地址通常由本地 DNS 解析器完成,并且确实会被缓存。这就是为什么即使没有连接也可以获取地址的原因。

更好的选择是100% packet loss这里是脚本的修改版本。

echo " First check whether internet is working or not  : "
if ping -c 1 google.com | grep -qE '100% packet loss|Temporary failure in name resolution' ; then 
  echo "NO INTERNET CONNECTION FOUND !"
else 
  echo "[ OK ] Internet is connected.\n"
fi

相关内容