linux检查网络是否通畅_Shell脚本实现检测某ip网络畅通情况(含短信报警功能)
花了1天的时间写了一个检测某ip是否网络畅通的脚本,只检测网络是否畅通的功能很容易实现,但加了一些限制功能却不好实现。
复制代码 代码如下:
#!/bin/bash
####################################################################################
#本脚本放于异机,使用定时任务检测192.168.10.231是否网络畅通,如果不通则发短信告警
#为防止频繁收到短信,对发送短信做了如下限制:
#一小时内只发前三条告警短信,也就是如果网络一直不通,则每小时内只发前三条短信。
#本脚本只能检测一个ip是否网络断开,可在开始部分加个循环,检测多个ip
####################################################################################
#初始化环境变量
source /root/.bash_profile
#邮件发送列表
mail_list='135xxxxxxxx@139.com,zhangwz@xx.net'
#ping三次检测的ip
ping=`ping -c 3 192.168.1.69|awk 'NR==7 {print $4}'`
#如果三次均没ping通,则做以下操作
if [ $ping -eq 0 ]
then
#检查mailinfo文件是否存在,不存在则建立
if [ ! -e ./mailinfo ]
then
touch ./mailinfo
fi
#获取当前主机时间,用于邮件正文的时间显示
now_time=`date`
#检查./mailinfo的行数是否为空,如果为空则直接发送邮件
row_num=`wc -l ./mailinfo | cut -c 1`
if [ $row_num -eq 0 ]
then
echo "发邮件"
echo -e "1.69网络已断开,请检查 \n\n 告警时间:$now_time" | mutt -s "1.69告警" $mail_list
#更新最后一次发送时间
date +%Y%m%d-%H%M > ./mailinfo
echo 1 >> ./mailinfo
#如果mailinfo内容不为空,则判断(当前时间减1小时)是否大于上次发送时间,如果是则发邮件
else
#获取上次发邮件的日期和时间
last_date=`head -1 ./mailinfo | cut -c 1-8`
last_time=`head -1 ./mailinfo | cut -c 10-13`
#获取1小时前的日期和时间
current_date=`date +%Y%m%d`
current_time=`date +%H%M`
#计算当前时间和上次时间差距多久,加10#是为了防止0开头的字符被当成8进制计算
let time_diff=10#$current_time-10#$last_time
#获取发送次数
send_times=`tail -1 ./mailinfo`
#以下四种情况发邮件:
#当前日期>上次日期,可以发,然后发送计数send_times置为1
if [ "$current_date" -gt "$last_date" ]
then
echo "发邮件"
echo -e "1.69网络已断开,请检查 \n\n 告警时间:$now_time" | mutt -s "1.69告警" $mail_list
#更新最后一次发送时间
date +%Y%m%d-%H%M > ./mailinfo
echo 1 >> ./mailinfo
fi
#当前日期等于上次日期 and 本次时间大于上次时间1小时外,可以发,然后发送计数send_times置为1
if [ "$current_date" -eq "$last_date" -a $time_diff -ge 100 ]
then
echo "发邮件"
echo -e "1.69网络已断开,请检查 \n\n 告警时间:$now_time" | mutt -s "1.69告警" $mail_list
#更新最后一次发送时间
date +%Y%m%d-%H%M > ./mailinfo
echo 1 >> ./mailinfo
fi
#当前日期等于上次日期 and 发送计数send_times置为1,可以发,然后发送次数加1
if [ "$current_date" -eq "$last_date" -a $send_times -eq 1 ]
then
echo "发邮件"
echo -e "1.69网络已断开,请检查 \n\n 告警时间:$now_time" | mutt -s "1.69告警" $mail_list
#更新最后一次发送时间
date +%Y%m%d-%H%M > ./mailinfo
echo 2 >> ./mailinfo
fi
#当前日期等于上次日期 and 发送计数send_times置为2,可以发,然后发送次数加1
if [ "$current_date" -eq "$last_date" -a $send_times -eq 2 ]
then
echo "发邮件"
echo -e "1.69网络已断开,请检查 \n\n 告警时间:$now_time" | mutt -s "1.69告警" $mail_list
#更新最后一次发送时间
date +%Y%m%d-%H%M > ./mailinfo
echo 3 >> ./mailinfo
fi
fi
fi
本文标题: Shell脚本实现检测某ip网络畅通情况(含短信报警功能)
本文地址: http://www.cppcns.com/os/linux/117393.html
linux检查网络是否通畅_Shell脚本实现检测某ip网络畅通情况(含短信报警功能)相关推荐
- shell 判断网线插拔_shell脚本自动检测网络掉线和自动重连
在ppp移植成功后,有时会出现ppp掉线等情况.这篇文章写了一个自动检测连接网络的解决方法. 创建一个shell脚本,在里面添加一下内容.(记得给操作权限) #!/bin/sh //根据你自己的she ...
- linux 网卡自动挂死,shell脚本自动检测网络掉线和自动重连
在ppp移植成功后,有时会出现ppp掉线等情况.这篇文章写了一个自动检测连接网络的解决方法. 创建一个shell脚本,在里面添加一下内容.(记得给操作权限) #!/bin/sh //根据你自己的she ...
- linux启动jar服务命苦_shell脚本启动jar包
1.基于maven的springboot项目打包 2.到项目路径下对应target目录找到生成的jar 将之上传到linux系统上 3.对应shell脚本 ------脚本开始------ #!/bi ...
- 脚本控制向Android模拟拨打电话,发送短信,定位设置功能
做行为触发的时候要向模拟器实现拨打电话,发送短信,定位设置的的功能,可以很方便通过telnet localhost 5554实现. 写个脚本很快的搞定了.网上资料很多,脚本的很少,也所积点德啦. 写 ...
- 网络可视对讲系统服务器解决方案,医护可视对讲系统(IP网络)解决方案
随着我国医疗建设的发展,利用先进的信息技术为医院服务,已成为医院信息化建设中的一个重要着眼点.创建一套功能强大的"医护广播可视对讲系统",可满足病房呼叫对讲.录音录像以及公共区域的 ...
- 计算机未检测到任何网络硬件,电脑提示windows没有检测到任何网络硬件怎么办...
电脑提示windows没有检测到任何网络硬件的解决方法:1.点击开始菜单,找到并打开设备管理器选项:2.在打开的设备管理器中找到网络适配器:3.右键点击,选择[更新驱动程序]即可. 本文操作环境:wi ...
- linux检查网络是否通畅_linux下怎么检测网络的连通性
匿名用户 1级 2016-11-29 回答 linux查看网络链接状况命令 netstat 参数如下: -a 显示所有socket,包括正在监听的. -c 每隔1秒就重新显示一遍,直到用户中断它. - ...
- Linux断开进程的某个socket,Linux Socket:如何在客户端程序中检测断开的网络?
我正在调试基于c的linux套接字程序.正如网站上提供的所有示例一样, 我应用了以下结构: sockfd= socket(AF_INET, SOCK_STREAM, 0); connect(sockf ...
- (Q 2)netstat命令 检测TCP/IP 网络链接是否存在异常
netstat命令教程视频 1.-e 以太网查看 C:\>netstat -e 接口统计接收的 发送的字节 1663186062 243565560 单播数据包 1820964 1413096 ...
最新文章
- HDU1029 - Ignatius and the Princess IV【水题】
- insert 语句_[原理解析] MySQL insert语句的磁盘写入之旅
- 字节跳动实习生提出实例分割新方法:性能超过何恺明Mask R-CNN
- css清除浮动的原理
- ASP.NET AJAX入门系列
- WPF简易北京地铁效果图
- 网络-UDP与TCP
- 一步一步使用 DialogFragment 封装链式调用 Dialog
- DALSA相机平场校正步骤
- u盘写保护+计算机管理,U盘写保护的解决方法
- LaTeX中的参考文献BibLaTeX
- Could not find goal ‘assembly‘ in plugin org.apache.maven.plugins:maven-assembly-plugin: among avai
- 1227. 飞机座位分配概率
- 概率论考点之指数分布,泊松分布及积分(一维随机变量内容)
- 基于单片机和GPS定位农田面积测量仪设计(毕业设计资料)
- Ant design pro入坑指南
- 【译】什么才是优秀的代码
- 高性能永磁交流伺服电机系统控制策略
- 搜狗AI事业部张博:不只翻译机,半年内将推数款智能硬件产品
- 无法建立与远程计算机连接,解决“不能建立到远程计算机的连接,因此用于此...”的方法_常见问题解析...
热门文章
- 使用ambertool安装gmx_mmpbsa
- Hexo图片外链生成专用文章
- 能用网络但是个个计算机不能连上,为什么无线网络连接上却不能上网,小编教你电脑连上无线网却不能上网怎么办...
- 在线电影订票系统 - 数据库建模
- sshd:root@notty: linux 被暴力登录处理
- html保留数据库文本格式,以html格式显示数据库中的格式化文本(FLASK应用程序)...
- 详解手游平台搭建需要哪些条件?需要注意什么?
- Retrofit 大体框架
- 高级API 快速入门之第七章 本地模拟下载文件
- mumu按键精灵_什么安卓模拟器可实现操作录制?MuMu模拟器成为你的按键精灵_MuMu安卓模拟器/MuMu手游助手...