Shell习题04——监控机器的存活

题目要求

设计一个脚本,监控远程的一台机器(假设ip为180.163.26.39)的存活状态,当发现宕机时发一封邮件给你自己。

核心要点

ping -c10 180.163.26.39 通过ping来判定对方是否在线

Python发邮件脚本

参考答案
#!/bin/bash
n=`ping -c5 180.163.26.39|grep 'packet' |awk -F '%' '{print $1}' |awk '{print $NF}'`
if [ -z "$n" ]
then
    echo "脚本有问题。"
    python mail.py  $m "检测机器存活脚本$0有问题" "获取变量的值为空"
    exit
else
    n1=`echo $n|sed 's/[0-9]//g'`
    if [ -n "$n" ]
    then
        echo "脚本有问题。"
        python mail.py  $m "检测机器存活脚本$0有问题" "获取变量的值不是纯数字"
        exit 
    fi
fi

if 
m=123@qq.com
while :
do
    if [ $n -ge 50 ]
    then
    	python mail.py $m "机器宕机" "丢包率是$n%"
    fi
    sleep 30
done

ping:测试主机之间网络的联通性
ping [选项] 目标主机

Linux默认是一直发送数据包,Ctrl+C停止

选项

-c<次数> 指定发送ICMP报文的次数,否则ping命令将一直发送报文

ping -c5 180.168.26.39结果

[root@VM-8-9-centos ~]# ping -c5 180.163.26.39
PING 180.163.26.39 (180.163.26.39) 56(84) bytes of data.
64 bytes from 180.163.26.39: icmp_seq=1 ttl=51 time=32.4 ms
64 bytes from 180.163.26.39: icmp_seq=2 ttl=51 time=32.3 ms
64 bytes from 180.163.26.39: icmp_seq=3 ttl=51 time=32.3 ms
64 bytes from 180.163.26.39: icmp_seq=4 ttl=51 time=32.2 ms
64 bytes from 180.163.26.39: icmp_seq=5 ttl=51 time=32.2 ms

--- 180.163.26.39 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 32.277/32.319/32.433/0.127 ms

n=`ping -c5 180.163.26.39|grep ‘packet’ |awk -F ‘%’ ‘{print $1}’ |awk ‘{print $NF}’
过滤丢包率,匹配包含packet这一行,用%做分隔符,获取第一个参数,接着获取最后一个参数,变量n的值为0

-z,检测字符串长度是否为0,为0返回 true

s/[0-9]//g: 删除字符串包含的所有的数字

-z “$n”:检测字符串长度是否为0,为0返回 true。

-n “$n”:检测字符串长度是否不为0,不为0返回 true。

$n -ge 50:表示n大于等于50

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值