最新消息: 关于Git&GitHub 版本控制你了解多少?
您现在的位置是:群英 > 开发技术 > 编程语言 >
如何实现服务器监测邮箱并发出警报?
CSDN发表于 2020-09-08 17:50 次浏览
         该例子使用的是Centos6系统作为SMTP邮件服务器 其他的Linux发行版配置基本一样,只是命令会有些不同。


下载并安装SMTP组件

  1. 可以使用wget在线网上下载

wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz

  1. 解压软件包

tar -zxvf sendEmail-v1.56.tar.gz

  1. 将执行文件放到/usr/local/bin/下方便调用

cp sendEmail-v1.56/sendEmail /usr/local/bin/

  1. 给sendEmail文件执行权限

chmod 755 /usr/local/bin/sendEmail

邮箱发送脚本

vi /opt/sendEmail.sh
  • 1
#!/bin/bash
#
# Filename:    SendEmail.sh
# Revision:    1.0
# Date:        2020/05/29
# Author(作者):     xxx
# Email:       xxx.@qq.com
# Description(说明):    邮件告警脚本
# Notes:       使用sendEmail
#

# 脚本的日志文件
LOGFILE="/tmp/Email.log"
:>"$LOGFILE"  #清空文件
exec 1>"$LOGFILE"  #将标准输出重定向到日志文件中
exec 2>&1    #将错误输出也重定向到日志文件中
##########################以下变量赋值,(变量值自定义)方便调用#######################
SMTP_server='smtp.qq.com'            # 指定SMTP服务器,变量值开自行修改(例如smtp.163com)
username='XXXX@qq.com'                         	# 用户名,变量值为自己的邮箱
password='password'                 # 密码(QQ邮箱用的是授权码)
from_email_address='XXXX@qq.com'         	# 发件人Email地址
to_email_address="$1"                  # 收件人Email地址,使用位参1调用
message_subject_utf8="$2"                 # 邮件标题,位参2编写邮箱主题
message_body_utf8="$3"       # 邮件内容,位参3为邮件内容

############# 转换邮件标题为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"
####################使用sendmail调用变量发送邮件###############################
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

补充1 linux shell 配置文件中默认的字符集编码为UTF-8 。UTF-8是unicode的一种表达方式,gb2312是和unicode一样都是字符的编码方式,所以说gb2312跟utf-8的概念应该不是一个层次上的。在LINUX上进行编码转换时,可以利用iconv命令实现,这是针对文件的,即将指定文件从一种编码转换为另一种编码。

iconv命令格式: iconv [选项…] [文件…]

有如下选项可用:

输入/输出格式规范 含义
-f, --from-code 名称 原始文本编码
-t, --to-code 名称 输出编码
输出控制 含义
-c 从输出中忽略无效的字符
-o, --output FILE 输出文件
-s, --silent 关闭警告
–verbose 打印进度信息

示例:

iconv -f utf-8 -t gb2312 /server_test/reports/software_.txt > /server_test/reports/software_asserts.txt

补充2 sedmail用法

选项 含义
-f 发件人邮箱地址,例如 -f from@163.com
-t 收件人邮箱地址,例如 -t to@qq.com
-s 发件人邮箱的smtp服务器地址,例如 -s smtp.163.com
-u 邮件标题,例如 -u ‘test’
-o 邮件内容格式为html,例如 -o message-content-type=html
-o 邮件内容编码为utf8,例如 -o message-charset=utf8
-xu 发件人邮箱登录用户名,例如 -xu from@163.com
-xp 发件人邮箱登录密码,例如 -xp ‘passwd’
-m 邮件内容,例如 -m ‘test’

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
相关信息推荐