花了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网络畅通情况(含短信报警功能)相关推荐

  1. shell 判断网线插拔_shell脚本自动检测网络掉线和自动重连

    在ppp移植成功后,有时会出现ppp掉线等情况.这篇文章写了一个自动检测连接网络的解决方法. 创建一个shell脚本,在里面添加一下内容.(记得给操作权限) #!/bin/sh //根据你自己的she ...

  2. linux 网卡自动挂死,shell脚本自动检测网络掉线和自动重连

    在ppp移植成功后,有时会出现ppp掉线等情况.这篇文章写了一个自动检测连接网络的解决方法. 创建一个shell脚本,在里面添加一下内容.(记得给操作权限) #!/bin/sh //根据你自己的she ...

  3. linux启动jar服务命苦_shell脚本启动jar包

    1.基于maven的springboot项目打包 2.到项目路径下对应target目录找到生成的jar 将之上传到linux系统上 3.对应shell脚本 ------脚本开始------ #!/bi ...

  4. 脚本控制向Android模拟拨打电话,发送短信,定位设置功能

    做行为触发的时候要向模拟器实现拨打电话,发送短信,定位设置的的功能,可以很方便通过telnet localhost  5554实现. 写个脚本很快的搞定了.网上资料很多,脚本的很少,也所积点德啦. 写 ...

  5. 网络可视对讲系统服务器解决方案,医护可视对讲系统(IP网络)解决方案

    随着我国医疗建设的发展,利用先进的信息技术为医院服务,已成为医院信息化建设中的一个重要着眼点.创建一套功能强大的"医护广播可视对讲系统",可满足病房呼叫对讲.录音录像以及公共区域的 ...

  6. 计算机未检测到任何网络硬件,电脑提示windows没有检测到任何网络硬件怎么办...

    电脑提示windows没有检测到任何网络硬件的解决方法:1.点击开始菜单,找到并打开设备管理器选项:2.在打开的设备管理器中找到网络适配器:3.右键点击,选择[更新驱动程序]即可. 本文操作环境:wi ...

  7. linux检查网络是否通畅_linux下怎么检测网络的连通性

    匿名用户 1级 2016-11-29 回答 linux查看网络链接状况命令 netstat 参数如下: -a 显示所有socket,包括正在监听的. -c 每隔1秒就重新显示一遍,直到用户中断它. - ...

  8. Linux断开进程的某个socket,Linux Socket:如何在客户端程序中检测断开的网络?

    我正在调试基于c的linux套接字程序.正如网站上提供的所有示例一样, 我应用了以下结构: sockfd= socket(AF_INET, SOCK_STREAM, 0); connect(sockf ...

  9. (Q 2)netstat命令 检测TCP/IP 网络链接是否存在异常

    netstat命令教程视频 1.-e 以太网查看 C:\>netstat -e 接口统计接收的 发送的字节 1663186062 243565560 单播数据包 1820964 1413096 ...

最新文章

  1. HDU1029 - Ignatius and the Princess IV【水题】
  2. insert 语句_[原理解析] MySQL insert语句的磁盘写入之旅
  3. 字节跳动实习生提出实例分割新方法:性能超过何恺明Mask R-CNN
  4. css清除浮动的原理
  5. ASP.NET AJAX入门系列
  6. WPF简易北京地铁效果图
  7. 网络-UDP与TCP
  8. 一步一步使用 DialogFragment 封装链式调用 Dialog
  9. DALSA相机平场校正步骤
  10. u盘写保护+计算机管理,U盘写保护的解决方法
  11. LaTeX中的参考文献BibLaTeX
  12. Could not find goal ‘assembly‘ in plugin org.apache.maven.plugins:maven-assembly-plugin: among avai
  13. 1227. 飞机座位分配概率
  14. 概率论考点之指数分布,泊松分布及积分(一维随机变量内容)
  15. 基于单片机和GPS定位农田面积测量仪设计(毕业设计资料)
  16. Ant design pro入坑指南
  17. 【译】什么才是优秀的代码
  18. 高性能永磁交流伺服电机系统控制策略
  19. 搜狗AI事业部张博:不只翻译机,半年内将推数款智能硬件产品
  20. 无法建立与远程计算机连接,解决“不能建立到远程计算机的连接,因此用于此...”的方法_常见问题解析...

热门文章

  1. 使用ambertool安装gmx_mmpbsa
  2. Hexo图片外链生成专用文章
  3. 能用网络但是个个计算机不能连上,为什么无线网络连接上却不能上网,小编教你电脑连上无线网却不能上网怎么办...
  4. 在线电影订票系统 - 数据库建模
  5. sshd:root@notty: linux 被暴力登录处理
  6. html保留数据库文本格式,以html格式显示数据库中的格式化文本(FLASK应用程序)...
  7. 详解手游平台搭建需要哪些条件?需要注意什么?
  8. Retrofit 大体框架
  9. 高级API 快速入门之第七章 本地模拟下载文件
  10. mumu按键精灵_什么安卓模拟器可实现操作录制?MuMu模拟器成为你的按键精灵_MuMu安卓模拟器/MuMu手游助手...