首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查网络可用性的ping脚本

检查网络可用性的ping脚本
EN

Unix & Linux用户
提问于 2021-06-24 11:11:18
回答 1查看 1.9K关注 0票数 0

我想要创建一个脚本的ddwrt,在4主机上的pings检查互联网是否可用。如果在4个测试中,其中一个ping结果实现了,那么假设internet正在工作,否则没有连接。至少有一个测试需要实现。

这就是我一直在写的剧本。

代码语言:javascript
复制
#!/bin/sh
result=`ping -c 1 8.8.8.8 | grep -c from`
sleep 10
result+=`ping -c 1 www.google.com | grep -c from` 
# I want the output from this command to add into result variable. For example, if result value is 0 then add the value of next ping command into 0, same with the rest of the commands. Is that possible?
sleep 10
result+=`ping -c 1 www.microsoft.com | grep -c from`
sleep 10
result+=`ping -c 1 www.youtube.com | grep -c from`
if [ $result -ge 1 ] 
then 
echo "Internet alright"
   logger -t 'InternetCheck' 'Internet is Connected'
   logger "ping $result"
else
    logger -t 'InternetCheck' 'After many ping tests, the Internet is not working... will apply solution'
   
   logger "ping $result"
fi

虽然ddwrt已经提供了看门狗,但我不希望路由器重新启动,相反,我想运行命令在那个时刻,以解决问题。请给我其他的建议。

致以问候!

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-06-24 11:49:46

一些想法:

  • 如果得到响应,ping的退出状态为-0,如果没有,则为非-0。你可以用这个代替打招呼。
  • 您可能希望并行运行这4个ping命令,并使用wait等待它们。这样你就不用等到4个不成功的点击才知道你的互联网连接中断了。
  • 或者,如果您的连接大部分时间都能工作,您可能会在第一次成功的ping之后停止,因为您只想知道它是否工作,而不是您可以到达多少个目的地。

这个脚本(只适用于2个it,不包括日志记录内容,您可以轻松地扩展它)将在很短的时间内给出答案(您的脚本运行至少30秒+任何ping超时),并返回退出状态0或1,这取决于ping是否成功或全部失败。它使用-W选项设置一个短超时;除非您的internet连接确实不稳定,否则至少有一个地址应该在不到一秒钟内返回响应。

代码语言:javascript
复制
#!/bin/sh
IP1=8.8.8.8
IP2=4.4.4.4

#start first ping, remember its pid
ping -W 1 -c 1 $IP1 >/dev/null&
PID1=$!

# start second ping, remember its pid
ping -W 1 -c 1 $IP2 >/dev/null&
PID2=$!

# wait for pings to finish
if wait $PID1
then echo $IP1 is reachable, internet is working; exit 0
fi

if wait $PID2
then echo $IP2 is reachable, internet is working; exit 0
fi

# none reachable
echo all pings failed, internet is down
exit 1
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/655652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档