前段时间有个特殊ip,需要随时监控他是否可以ping通,在ping通的情况下是否存在丢包
研究了一下,特此记录一下脚本
下面是我的脚本,有许多不足之处,欢迎交流!
#!/bin/bash
# author :ssiy
# 需求:ping IP通->有丢包->输出IP通和丢包率;
# IP通->无丢包输出ip正常;
# 不通 -> 输出IP不通;
# 一次Ping 10个包,10分钟ping一次 ping完一次睡眠10分钟
# 思路:通过ping 的丢包率来判断ip是否正常
# 丢包率 100%-->不通-->输出IP不通
# 丢包率 0%-->不通-->输出IP正常
# 丢包率 其他-->能ping但有丢包-->输出丢包率
# 10分钟ping一次可以通过定时任务来实现,计划任务格式 “分 时 日 月 星”
# 该ip只是我用来测试的,大家可以根据自己的需求,使用其他ip,如果ip较多,可以统一放到一个文件,用for循环来操作
IP=8.8.8.8
# 取出丢包率的数字,取丢包率是该脚本的核心语句
loss_rate=`ping -c 10 $IP | tail -n 2 | head -n 1 | awk -F ',' '{print $3}' | tr "%" " " | awk '{print $1}'`
#echo "$loss_rate%"
# 用if来输出相应对ip判断的语句
if [ $loss_rate -eq 0 ]
then
echo "ip正常!!!"
else
if [ $loss_rate -eq 100 ]
then
echo "ip不通,请检查!!!"
else
echo "ip能ping通,但丢包率为$loss_rate%!!!"
fi
fi
定时任务
H/10 * * * * 脚本路径
# 脚本记得加执行权限
脚本还只是初级版本,我有一个设想:
可以将取出来的ip丢包率保存,当丢包率为100%时,可以通过python发送邮件告警,这样可以即时的监控的ip的健康状态,达到自动化的目的,但python脚本我不是很熟,会尽力学习看看能不能实现该功能!
本人对shell脚本比较感兴趣,暂时还只能写比较简单的,如果有遇到不会写的,欢迎留言!