利用发邮件的形式监控网站是否异常
-
【shell要求】
-
写一个shell脚本,通过curl -I 返回状态码来判定所访问的网站是否正常,比如当代码状态200,才算正常写一个发邮件的脚本.
-
【shell分析】
1、关键问题,截取出代码状态
2、在写出该shell脚本时,应该先在命令下面使用curl -I http://www.51xit.top/命令测试,然后通过awk截取到状态码
3、写发邮件的脚本,用的是sendEmail。生产环境有配套的模板
4、判断和发邮件关联
curl -I http://www.51xit.top/
我们抓包会有交互信息 200
-
【安装邮件组件】
-
[root@tang ~]# wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz ####下载安装包 [root@tang ~]# tar -zxvf sendEmail-v1.56.tar.gz #####解压安装包 [root@tang ~]# cp sendEmail-v1.56/sendEmail /usr/local/bin/ ####复制文件内容至/usr/local/bin/ [root@tang ~]# chmod 755 /usr/local/bin/sendEmail ####给与权限 [root@tang ~]# vi /opt/sendEmail.sh ####编辑脚本文件
-
【shell配置–1、 2】
(注意:curl -l 命令加上管道后,会有一个下载过程的详细信息。如:下载百分比,速度等信息,这些信息为错误输出,所以需要加上一个 2>/dev/null)#/bin/bash url='www.51xit.top' sta=`curl -l $url 2> /dev/null | head -1 | awk '{print $2}'` if [ $sta != "200" ] then /opt/sendEmail.sh xxxxxxxx@qq.com "$url down." "$url down." ###xxxxxxxx为 你想要发送邮件的QQ fi
-
【shell配置–3、 4】
#!/bin/bash # #Filename: SendEmail.sh #Revision: 1.0 #Date: 2019/05/29 #Author: Qicheng #Email: #Website: http://51xit.top/ #Description: tang邮件告警脚本 #Notes: 使用sendEmail # #脚本的日志文件 LOGFILE="/tmp/Email.log" :>"$LOGFILE" exec 1>"$LOGFILE" exec 2>&1 SMTP_server='smtp.qq.com' ##### SMTP服务器,变量值需要自行修改 username='XXXX@qq.com' ##### 用户名,变量值需要自行修改 password='password' ##### 密码(QQ邮箱用的是授权码),变量值需要自行修改 from_email_address='XXXX@qq.com' #### 发件人Email地址,变量值需要自行修改 to_email_address="$1" ##### 收件人Email地址,tang传入的第一个参数 message_subject_utf8="$2" ##### 邮件标题,tang传入的第二个参数 message_body_utf8="$3" ##### 邮件内容,tang传入的第三个参数 #转换邮件标题为GB2312,解决邮件标题含有中文,收到邮件显示乱码的问题。 message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF $message_subject_utf8 EOF` [ $? -eq 0 ] && message_subject="$message_subject_gb2312" || message_subject="$message_subject_utf8" #转换邮件内容为GB2312,解决收到邮件内容乱码 message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF $message_body_utf8 EOF` [ $? -eq 0 ] && message_body="$message_body_gb2312" || message_body="$message_body_utf8" #发送邮件 sendEmail='/usr/local/bin/sendEmail' set -x $sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$message_subject" -m "$message_body" -o message-content-type=text -o message-charset=gb2312