脚本应用之八:ping工具同时监控多主机(后台运行,并显示)

作用:通过ping工作实时监控多台主机

实现:多进程后台运行,并分区域显示

使用:将欲监控的主机作为参数

演示:


代码专区:

#/bin/bash

#  LY
#  ------------------
#  Copyright 2016.04.14  LingYi ([email protected]) QQ:1519952564
#  "monitor hosts by batch ping in the background"

all_sum=0 
success_sum=0
failed_sum=0
failed_percent=0
pids_arry=()
signs_arry=()
ips_arry=([email protected])
line_start=5
#显示间隔(行)
line_interval=1

#后台运行函数,实现ping操作以及在规定区域打印统计信息
exec_func()
{
	local stop_exec=false
	trap ‘stop_exec=true‘ $3
	while ! $stop_exec; do
		ping -c 1 -W 2 $1 &>/dev/null && (( success_sum+=1 )) || (( failed_sum+=1 ))
		(( all_sum+=1 ))
		failed_percent=$( echo "scale=2;${failed_sum}/${all_sum}*100" | bc )
		echo -ne "\033[$2;1H"
		printf "    %-16s%-10s%-10s%-10s%-10s" $1 $all_sum $success_sum $failed_sum "${failed_percent}%"
		usleep 1$((RANDOM%5))00000
	done
}

#捕捉信号(一般ctrl+c),并忽略
trap ‘ ‘ 2
#隐藏鼠标
tput civis
clear
printf "\n\t\t%s\n" ‘Ping Monitor [ "Q" to Exit ! ]‘ 
printf "%57s\n" ‘ ‘ | tr ‘ ‘ ‘=‘
printf "    %-16s%-10s%-10s%-10s%-10s\n" IP Sum Suc Fail Perc

#循环监控主机,并记录后台进程的进程号,以便运行结束后禁止其运行
for(( index=0; index<${#ips_arry[@]}; index++ )); do
	sign=$((RANDOM%20+10))
	(( line_start+=line_interval ))
	exec_func ${ips_arry[index]} $line_start $sign &
	pids_arry=( ${pids_arry[@]} $! )
	signs_arry=( ${signs_arry[@]} $sign )
	usleep $((RANDOM%5+6))00000
done

#接收用户通过“q”键 终止脚本运行
while :; do
	read -s -n 1 user_input
	if [[ $user_input == ‘q‘ ]]; then
		for ((index=0; index<${#ips_arry[@]}; index++ ))
		do
			kill  -${signs_arry[index]} ${pids_arry[index]} &>/dev/null
		done
		tput cnorm
		sleep 1
		echo -ne "\033[$line_start;1H"
		echo
		exit
	fi
done


时间: 2024-10-12 08:34:50

脚本应用之八:ping工具同时监控多主机(后台运行,并显示)的相关文章

Cacti监控ESXI主机步骤详解

需求: 公司需要监控esxi私用机器的性能,并配置一些阈值报警等需求,最后选择用Cacti(zabbix也可以),首先需要打开esxi的snmp功能, 但ESXi中的SNMP不支持GET,支持TRAP.因此不可以用GET方法获取ESXi的SNMP信息.不同版本esxi可能略有不同,但是大致思路相同大致步骤如下: 1.使用ssh登陆ESXi主机:(比较简单,可查看我的博客三种方式开启esxi的ssh,注意开启配置完毕后关闭) 2.切换至/etc/vmware/目录 vi打开snmp.xml ~ #

python脚本后台运行

问题描述: 环境: CentOS6.4 一个用python写的监控脚本test1.py,用while True方式一直运行,在ssh远程(使用putty终端)时通过以下命令启动脚本: python test1.py & 现在脚本正常运行,通过ps能看到进程号,此时直接关闭ssh终端(不是用exit命令,是直接通过putty的关闭按钮执行的), 再次登录后发现进程已经退出了. 通过后台启动的方式该问题已经解决,这里总结下,也方便我以后查阅. linux 下后台运行 通过fork实现 linux环境

如何通过bat脚本与zabbix_sender实时监控应用进程是否正在运行

为什么要使用zabbix_sender?zabbix获取数据有超时时间,如果一些数据需要执行比较长的时间才能获取的话,那么zabbix会出现异常,考虑到这种情况,zabbix增加了Trapper功能,客户端自己提交数据给zabbix,这个通道便是trapper.思路解析:在window主机上,编写一个每隔5秒就会执行tasklist查看进程的bat脚本,如果该脚本找到了指定的进程就通过zabbix_sender发送"is running"到zabbix_server服务器,此时对应的z

Linux crontab的使用方式,sh脚本的编写,sh脚本自动启动tomcat服务器,sh监控系统运行情况

1.如果想使用Linux crontab(类似java quartz),需要先启动crontab.关于crontab的启动.关闭.重启.重新载入配置的方式如下: /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //重新载入配置 2.crontab的命令介绍: A:添加crontab的命令是:c

用 Python 脚本实现对 Linux 服务器的监控

hon 分享到:8 原文出处: 曹江华 目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统管理员可以根据自己使用的服务器的具体情况编写一下简单实用的脚本实现对 Linux 服务器的监控. 本文介绍一下使用 Python 脚本实现对 Linux 服务器 CPU 内存 网络的监控脚本的编写. Python 版本说明 Python 是由 Guido va

#题目:有10 台被监控主机、一台监控机,在监控机上编写脚本,一旦某台被监控机器/ 分区适用率大于80%, 就发邮件报警放到crontab 里面, 每10 分钟检查一次

#测试机器:虚拟机Linux as 4 #1.首先建立服务器间的信任关系.拿两台机器做测试 //本机ip:192.168.1.6 [[email protected] ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa already exists. Overwrite (y/

linux监控某个进程的运行shell脚本

该脚本实现了对指定进程名的进程进行每隔2的扫描监控,一旦发现进程不存在便重新启动. #!/bin/sh a=10; while [[ @a -gt 5 ]]; do if test $(pgrep -f $1|wc -l) -eq 2;then sh stop.sh gnome-terminal -x sh start.sh & fi; sleep 2; done; 总结:(1)&表示当前进程又启动一个进程执行gnome-terminal命令:(2)linux下父进程挂掉,子进程不会挂,而

使用jconsole工具来监控java运行情况

参考:http://blog.163.com/lucas_nina/blog/static/185960149201493034258448/ 经验证OK   jconsole是jdk自带的工具.所以要先安装jdk   1.jconsole工具的路径: 通过which jconsole来查看 /usr/local/jdk1.7.0_79/bin/jconsole 2.使用方式: 在linux监控端的图形界面执行:/usr/local/jdk1.7.0_79/bin/jconsole 将出现图形化

脚本式计算能力对报表工具的重要性

在报表项目开发中常常会出现自定义数据源的情况.这是因为有很多结构化计算比较复杂,需要多步骤完成.sql或者报表本身的计算能力并不适合完成这种过程化计算,所以报表程序员会借助于报表API,使用Java程序来完成. 例如这个<各地区销售情况分析表>: 该报表是根据订单表统计各(预置)时间段内,各地区的订单数量.订单金额汇总.其中各时间段范围为: 1996年圣诞前:date< 1996-12-25 1996年圣诞--1997年国庆:1996-12-25 <= date <= 199