一个简单的需求,通过shell脚本用ping监控主机,5分钟ping一次,发现ping不通的主机就发消息到钉钉上面

两个文件一个check.sh,一个ip.txt

ip.txt一行一个IP,

Linux添加计划任务,5分钟执行一次

crontab -e
添加 */5 * * * * /root/dingtalk/check.sh

check.sh代码,加粗的地方为要修改的

#!/bin/bash
date=`date +"%m月%d日%H时%M分%S秒"`
dingtalkapi="https://oapi.dingtalk.com/robot/send?access_token=xxxxx"

logfile="/root/dingtalk/ping.log"

function dingtalk(){
    curl "$dingtalkapi" -H 'Content-Type: application/json; charset=UTF-8' -d "{\"msgtype\": \"text\",\"text\": { \"content\":\" ---!注意 !丢包率$per %---
    $1 速度 $avg ms
    $date \" }}"
}

for i in `cat /root/dingtalk/ip.txt`;
do
    IP=`echo $i |awk '{print $1}'`
    des=`echo $i|awk '{print $2}'`
    date=`date +"%m月%d日%H时%M分%S秒"`
    ping -w 5 -i 0.2 -c 10 $IP > $logfile
    per=`awk '/loss/{printf("%2d", $6)}' $logfile`
    avg=`awk '/avg/{print $5}' $logfile`

    if [ $per -qt 30 ] ; then
        dingtalk $IP
    fi
done

代码截图

下载代码dingtalk