我正在尝试使用 shell 脚本检查我是否连接到互联网。我认为我可以通过使用ping命令来做到这一点,因为如果 ping 成功,括号内有一个 IP 信息。如果没有括号,那么我使用cut命令分配一个特定的变量,如果是这种情况,该变量将变为空。
所以我写了下面的代码:
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 结果?
将名称转换为 IP 地址通常由本地 DNS 解析器完成,并且确实被缓存了。这就是为什么即使您没有连接也可以获得地址的原因。
寻找更好的方法是
100% packet loss
,这里是您的脚本的修改版本。更好的测试,不需要grep...