监控域名+发送邮件

#!/bin/bash
###
###
status_error=$(wc -l /usr/local/sbin/error.txt|awk '{print $1}')
current_time=`date +%F-%T` #时间变量
check_domain () {
#status_code=$(curl -I $url 2>/dev/null |grep 'HTTP' |awk '{print $2}')
status_code=$(curl -m 20 -s -o /dev/null -w %{http_code} $url)
}
# 清空前一次循环的记录,并且输入当前时间.
echo "当前时间为$current_time" > /usr/local/sbin/error.txt
# 检测域名状态码,非200或302的就认为不正常。并且记录到error的文件里
for url in `/bin/cat /usr/local/sbin/domain.txt`
do
{
check_domain
if
[ $status_code -eq 200 ] || [ $status_code -eq 302 ];
then
# echo "$url 状态码为: $status_code" >> /usr/local/sbin/right.txt
continue
else
echo "$url 状态码为: $status_code" >> /usr/local/sbin/error.txt
fi
}&
done
# wait的参数到头重要,等待for循环结束后执行下面的内容。如果不给此参数的话则会导致下面有的内容无法执行下去。
# 如果行数不等于1,刚发送邮件。(因为我前面注入了一行时间,所以要不等于1)
wait
if [ $status_error -ne 1 ]
then
mail -s "网络异常,请检查" 1445076056@qq.com < /usr/local/sbin/error.txt
fi
exit

这是发送邮件用是的mailx服务,如果你是阿里云的话就安装mailx后还得设置。关于465端口发送邮件,请参考:https://www.cnblogs.com/yeyu1314/p/10167944.html

此脚本想直接用,把domain.txt和脚本放在/usr/local/sbin下!(注意文件名要一致)

posted on 2018-12-25 20:43  yeyu1314  阅读(115)  评论(0编辑  收藏  举报