我们在前面的几章中已经学习了一些基本用法,现在来尝试 批量监控服务器是否存活。
基本的思路是 用 ping 的方法。 如果服务器能ping通则说明服务器存活。
脚本代码如下:
#! /bin/bash N=2 [email protected] while true do ipfile=/data/shell/serverip.txt for ip in `cat $ipfile`; do mailfile=/data/shell/pkgloss.txt pkgloss=`ping -c4 $ip |grep 'transm' |awk -F ',' '{print $2}' |awk '{print $1}'` if [ $pkgloss -lt $N ]; then echo $ip >$mailfile ping -c4 $ip |grep 'transm' >>$mailfile mail -s "$ip loss packets" $rmail<$mailfile fi done sleep 120 done
-c 数目:在发送指定数目的包后停止。
ping -c4 意思是只ping4次。
grep 'transm' 只取含有 transm 字符串的行
awk -F ',' '{print $2}' 用‘,’号分割后 取第二列
awk '{print $1}' 用空白分割后 取第一列
所以代码的意思为: 循环取出serverip.txt中的ip,进行ping并返回 ping通的次数。
如果ping通的次数小于或者等于2则把 ip 和 ping的内容 写入到报错文件pkgloss.txt中
并把pkgloss.txt中的内容 发送到 [email protected]邮箱中。
创建脚本check-ping.sh
vim /data/shell/check-ping.sh
vim /data/shell/serverip.txt
#这个文件是放要监控服务器的ip. 写入ip,格式如下图
再创建pkgloss.txt
touch /data/shell/pkgloss.txt
#这个文件是放报错信息的.
最后执行脚本
chmod +x /data/shell/check-ping.sh nohup sh /data/shell/check-ping.sh &
chmod +x 给脚本 执行权限
nohup是后台运行的意思
我这里写了3个ip,前两个可以ping通,192.168.1.22不通。
测试运行后成功报警,如下图 :