基于Shell脚本和SendEmail实现监控服务器异常并自动发送邮件提醒
本文最后更新于 153 天前,其中的信息可能已经有所发展或是发生改变。

原理

一个shell脚本,通过curl -I 返回状态码来判定所访问的网站是否正常,比如当代码状态200,才算正常
一个触发器,发邮件的脚本,使用Send Email,它是一个轻量级命令行操作的emtp邮件客户端

网站监控脚本

通过curl -I 返回状态码来判定所访问的网站是否正常,如当代码状态200,算正常
curl 是一种命令行工具,作用是发出网络请求,然后获取数据,显示在”标准输出”(stdout)上面。
curl -I 显示http服务的响应信息

#/bin/bash
url='www.xxx.com'    //目标链接
sta=`curl-l $url 2>/dev/null |head -1 |awk '{print $2}'`   //查看http响应数据
if [ $sta!=200 ]    //不等于200发送错误信息
then
   /opt/sendEmail.sh xxxxxxxxxx@qq.com "$url down." "$url down."  
fi     //使用Send Email向目标邮箱发送邮件

触发器脚本

【安装邮件组件】
[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/
[root@tang ~]# chmod 755 /usr/local/bin/sendEmail
[root@tang ~]# vi /opt/sendEmail.sh
#!/bin/bash
#
# Filename:    SendEmail.sh
# Revision:    1.0
# Date:        2022/8/22
# Author:      xic戏愁
# Website:     http://www.vxz.vin
# Description: tang邮件告警脚本

#

# 脚本的日志文件
LOGFILE="/tmp/Email.log"
:>"$LOGFILE"
exec 1>"$LOGFILE"
exec 2>&1

#将邮箱信息提前存储为变量方便调用
SMTP_server='smtp.xx.com'           # SMTP服务器,变量值需要自行修改
username='XXXX@xx.com'              # 用户名,变量值需要自行修改
password='password'                 # 密码(某些邮箱用的是授权码)变量值需要自行修改
from_email_address='XXXX@xx.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


[root@tang ~]# chmod +x /opt/sendEmail.sh
[root@tang ~]#   sh  sendEmail.sh    3490786751@qq.com  

Send Email使用指南

-f:           #表示发送者的邮箱
-t:           #表示接收者的邮箱
-s:           #表示SMTP的服务器的域名或者IP,也可以加端口号 域名:port
-u:           #表示邮件主题
-xu:          #表示SMTP验证的用户名(也就是登录邮箱的用户名)
-xp:          #表示SMTP验证的密码(也就是登录邮箱的密码)
-m:           #表示的内容
-cc:          #表示抄送
-bcc:         #表示暗抄送
-a:           #后加文件名,会以附件的形式发送
-o message-charset=utf8             #邮件内容的编码
-o message-content-type=html        #邮件内容的格式
-o message-file=a.txt               #把文件内容以邮件正文发出

评论

  1. 博主
    Windows Edge 104.0.1293.63
    5月前
    2022-8-23 2:48:49

    自顶

    • 戏愁
      xichou
      Android Chrome 83.0.4103.106
      5月前
      2022-8-23 3:45:48

      沙发

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇