#!/bin/bash
#下载alist中阿里云挂载的dsm中文件进行对比,若对比失败,表示链接失效,推送给钉钉
#钉钉机器人地址
WEBHOOK='https://oapi.dingtalk.com/robot/send?access_token=a7258d148939e3028aa80e1b76ef7c7b26dad13f0e402c42f51dea212c0ca493'
#加签关键字,只有包含这个关键字的消息才会被发送
JQ=ffing
#钉钉推送信息
SITE="alist_DSM"
#源文件md5:/DSM/kaerlol/2023年01月/卡尔2023-01-08号停播
SRC_MD5=2654bd908f3ab6e8f1c47270ac8f278d
#下载对比文件
DOWN_URL=http://pan.ffing.cn/d/DSM/kaerlol/2023%E5%B9%B401%E6%9C%88/%E5%8D%A1%E5%B0%942023-01-08%E5%8F%B7%E5%81%9C%E6%92%AD
DOWN_FILE=/tmp/alist_dsm.txt
#sh
SHPATH=`readlink -f $0`
SHDIR=`dirname $SHPATH`
#log_dir
LOG_DIR=$SHDIR/logs
mkdir -p $LOG_DIR
#LOG
LOG=$LOG_DIR/run.log
#循环检测
while true
do
echo "------------ `date +%F_%T`----------------" >$LOG
#循环检测5次
for i in `seq 5`
do
wget -t 3 --timeout=10 $DOWN_URL -O $DOWN_FILE >/dev/null
DOWN_MD5=`md5sum $DOWN_FILE|awk '{print $1}'`
if [ "$SRC_MD5" == "$DOWN_MD5" ];then
echo '正常' >>$LOG
else
echo '异常' >>$LOG
fi
sleep 20
done
#统计异常出现2次以上,则为异常
if [ `cat $LOG|grep 异常|wc -l` -ge 2 ];then
NOW_STAT=异常
else
NOW_STAT=正常
fi
NOW_DATE=`date +%F_%T`
NOW_S=`date +%s`
#若本次与上传不一致则,则钉钉
if [ ! $NOW_STAT == $LAST_STAT ];then
MS=" $SITE 状态发生变化: $NOW_STAT \n ---上次变更时间:$LAST_DATE \n ---本次变更时间:$NOW_DATE \n ---变更时间差为:$((NOW_S - LAST_S)) 秒"
curl $WEBHOOK -H 'Content-Type: application/json' -d "{\"msgtype\": \"text\",\"text\": {\"content\":\" $JQ$MS \"}}"
fi
LAST_STAT=$NOW_STAT
LAST_DATE=$NOW_DATE
LAST_S=$NOW_S
done