脚本应用之十四: ping监控多台主机丢包

测试系统版本: CentOS 6.4

作用: ping后台监控多台主机,根据丢包个数采取相应动作

使用: 将欲监控的主机作为参数,可前台运行或放到后台,CTRL+C结束, 后台运行的话 需要

kill -2 $(cat .mypid)结束  ( .mypid 记录的是脚本主进程的PID )

演示:

后台运行

使用 pstree -ap 查看相关进程

监控执行后的日志

代码专区:

#!/bin/bash

MAIL=‘[email protected]‘
#定义丢包个数
failed_packages_sum=2
ping_timeout=5

MYPID=$$

timestamp()
{
	echo -n "$(date +"%Y-%m-%d %H:%M:%S") "
}

#符合条件后的操作函数,可以定义其他操作
action()
{
	echo ---------------$(timestamp)--------------- >>${1}.log
	traceroute -n -m 11 -q 2 $1 >>${1}.log
        mail -s "Ping $1 Failed " $MAIL <${1}.log
}

exec_ping()
{
	local stop_exec=false 
	local failed_sum=0 

	trap ‘stop_exec=true‘ 20

	while ! $stop_exec
	do
		ping -c 1 -w $ping_timeout $1 &>/dev/null && failed_sum=0 || (( failed_sum+=1 ))
		[[ $failed_sum -eq $failed_packages_sum ]] && action $1
	done
}

STOP=false

#只有接受此信号,脚本才能正常结束所有后台运行函数
trap ‘STOP=true‘ 2

echo $MYPID >.mypid

#后台运行监控函数,并记录pid
while [[ $# -ne 0 ]]
do
	exec_ping $1 &
	pids_arry=( ${pids_arry[@]} $! )
	shift
done

while ! $STOP; do sleep 1; done

for(( index=0; index<${#pids_arry[@]}; index++ ))
do
	kill -20 ${pids_arry[index]}
done

附件下载源代码



时间: 2024-10-10 07:15:31

脚本应用之十四: ping监控多台主机丢包的相关文章

shell监控多台主机

用shell写了个脚本同时监控多台主机(监控主机是否在线,cpu,内存,硬盘,io使用状态,并有邮件通知功能),大神看后觉得有不当之处或有更好的实现方式,请不屑笔墨指出. 首先要在被监控主机和监控主机之间建立信任关系,不了解ssh证书验证的可以看看: http://dragon123.blog.51cto.com/9152073/1586795 安装mutt: [[email protected] ~]# yum install mutt 监控列表: [[email protected] ~]#

zabbix -- 监控一台主机实例演示

早起的鸟儿有虫吃,周末早起的虫儿不被吃,嘿嘿.                     ---- 小 Q 1.创建主机 2.创建监控项 3. 查看监控数据 4.创建用户 短信(微信)脚本 ------------------------------------------------------------------------------------1.创建主机 configuration(配置)-->Hosts(主机)-->Create host(创建主机) 注:此之前要创建个主机群组,

Winpcap网络编程十之Winpcap实战,两台主机通过中间主机通信

注:本篇博客同样不针对于伸手党,源代码等等的我不会完全公开的,此篇文章写出来为大家的网络编程或者课程设计提供一定的思路.. 好,本次我们需要完成的任务是: 完成两台主机通过中间主机的数据通信(网络层) 增加基于IP地址的转发功能 增加网络层封装 其实最主要的就是基于IP地址的转发功能,网络层的封装其实我们在初级功能中就已经做好了. 首先,实验的思路是A通过中间主机B向C发送数据.那么B则作为一个路由器,B要监听两个网卡,一个网卡发来的数据通过另一个网卡发出去. 示意图如下: A---------

ping、网络抖动与丢包

基本概念: ping: PING指一个数据包从用户的设备发送到测速点,然后再立即从测速点返回用户设备的来回时间.也就是俗称的“网络延迟”   一般以毫秒(ms)计算   一般PING在0~100ms都是正常的速度,不会有较为明显的卡顿. 测试ping值方法: 在powershell中输入ping [网络地址]即可测试,默认会测4次.如果需要测更多次,则把命令改为ping [网络地址] -t.通过Ctrl+C手动结束. 网络抖动: 网络抖动是指最大延迟与最小延迟的时间差,如最大延迟是20毫秒,最小

OGG维护优化脚本(二十四)-OGG状态监控系统--后台脚本

这个简易监控系统具体是由html实现的 后台没有数据库,只有从各台机器收集并上传过来的html文件 通过定时shell脚本整理并分类到各个目录,然后通过apache被网页调用 具体更新频率取决于各数据同步服务器的定时任务运行频率 OGG进程状态整理脚本 这个脚本用于整理进程信息上传脚本 收集到的文件,将其合并为html文件 pcsindex.sh #!/bin/bash cd /root/gg/ggscript/pcsindex ls -lrt /root/gg/gginfo/*.gginfo|

脚本应用之十六: 监控和消耗内存资源

作用:监控或消耗内存资源, 指定需要消耗到的百分比 实现:通过在内存中写入一定大小的文件实现 演示: 直接回车,查看当前内存的百分比 输入欲消耗的内存百分比 代码专区: #/bin/bash   #  LY #  ------------------ #  Copyright 2014.11.25 LingYi ([email protected]) QQ:1519952564 get_file_num(){ big_num=$1 small_num=$2 NUM=$3 file_num_per

Java(第十四章)

第十四章 1.Java中的包(package) 2.1 包,对应到磁盘中的文件夹 2.2 新建一个class,默认保存在缺省包中 2.3 声明包的关键字:package package语句,置顶位置 2.4 导入包的关键字:import import 包名.类名(*表示所有); 2.5 作用: 分类存放,解决同名冲突.方便查找和管理 2.6 命名规范 l  Java包名通常由小写字母组成,不能以圆点开头或结尾. l  一个唯一包名的前缀通常是全部小写的ASCII字母,并且是一个顶级域名com.e

使用mtr测试网络丢包率和平均延时的脚本实例

mtr(a network diagnostic tool)是一个神奇的指令,能按要求对路由中所有节点进行批量测试.简单敲一个"mtr qq.com"将会有意外收获! 当需要进行产品级的网络测试时,可在服务器上运行一段时间的mtr测试形成报告.如下脚本: #!/bin/bash# 测试网络丢包率和平均延时,注意变量clr和cdt的赋值,不同版本的mtr对应的字段位置不同# 脚本在CentOS 6.2 Linux 2.6.32-220.el6.x86_64 mtr v0.75 上测试通过

如何测试一台主机的IP和端口是否能连通,ping telnet

通过ping 判断一台主机是否开机. 通过:telnet 121.199.167.99 61616  判断一台主机的端口是否能连通. 本机------本地防火墙-------本地路由器------------远程路由器(聚石塔这里做了端口拦截)------------远程防火墙---------远程主机.