有时候,监控一个系统需要在系统有警告时通过shell发送邮件通知相关负责人。这篇文章讲的是shell是如何发送邮件的。一种是普通邮件,通过附件描述详细的报告;另一个是进阶邮件(哈哈),本来就是警告,要不快点看,下载附件慢慢打开?因此在HTML中直接在正文中显示附件内容,并通过样式标示警告。1.安装sendEmail工具下载解压配置环境变量]#wgethttp://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz]#tar-zxfsendEmail-v1.56.tar.gz-CSendEmail/#这里配置的环境变量不同,不是在profile文件中配置,而是复制到系统环境变量已有的路径下]#cd~/myApp/SendEmail/]#cpsendEmail/usr/local/bin/2.打开邮箱的SMTP。本文使用QQ邮箱作为发件人设置->账号->打开如下图3.发送邮件QQ邮箱对SMTP有如下说明:#!/bin/bashRECIVER="Wish0123@163.com"SENDER="964478654@qq.com"SENDER_USERNAME=964478654#密码填写SMTP第三方客户端授权码SENDER_PASSWD=************ATTACHMENT_PATH=/root/workspace/sh/attach_test.txt#如上所述下图,作为邮件的发件人,你应该填写这个hostnameSTMP_HOST=smtp.qq.comMESSAGEL_SUBJECT="HaveFun"MESSAGE_BODY="Alarm..."sendEmail-f$SENDER-t$RECIVER-a$ATTACHMENT_PATH\-s$STMP_HOST-xu$SENDER_USERNAME-xp$SENDER_PASSWD\-u$MESSAGEL_SUBJECT-m$MESSAGE_BODY\-omessage-charset=utf-8发送后报错:************************************************************************不推荐使用客户端默认的SSL_VERIFY_NONE的SSL_verify_mode!请e将SSL_verify_mode设置为SSL_VERIFY_PEER,可能使用SSL_ca_file|SSL_ca_path进行验证。如果您真的不想验证证书并保持连接对中间人攻击开放,请在您的应用程序中将SSL_verify_mode明确设置为SSL_VERIFY_NONE***********************************************************************at/usr/local/bin/sendEmailline1906.invalidSSL_versionspecifiedat/usr/share/perl5/vendor_perl/IO/Socket/SSL.pmline444.这意味着SSL版本错误。原因是cent7中的Perl版本是5.16,你应该使用低版本或者不使用SSL。您需要在脚本的最后一行向sendEmail命令添加一个参数-otls=nosendEmail-f$SENDER-t$RECIVER-a$ATTACHMENT_PATH\-s$STMP_HOST-xu$SENDER_USERNAME-xp$SENDER_PASSWD\-u$MESSAGEL_SUBJECT-m$MESSAGE_BODY\-omessage-charset=utf-8-otls=no发送成功!我擦了,结果被当成了诈骗邮件。.4、HTML版邮箱直接显示html需要两个条件:一是将要显示的数据用html标签封装起来,然后可以随意添加样式;另一种是在sendEmail中添加参数-omessage-content-type=html这里是根据系统内存状态发送系统邮件。当集群中机器的内存使用量超过总内存的80%时,机器信息会被标记为红色。[root@nn1sh]#catmemory_infoip消耗免费总计192.168.1.10100100200192.168.1.1.111239239240192.168.1.1235050400192.168.1.1.1.1.13bin/bash-xRECIVER="Wish0123@163.com"SENDER="964478654@qq.com"SENDER_USERNAME=964478654#密码填写SMTP第三方客户端授权码SENDER_PASSWD=xuxjxankheuubcjdSTMP_HOST=smtp.qq.comMESSAGEL_SUBJECT="HaveFun"HTML_PATH=html_pathecho"
ip | 消费 | 免费 | 总计 | ">>$HTML_PATHecho"">>$HTML_PATHcreate_tr(){i=2lines=$(catmemory_info|wc-l)while[$i-le$lines]doj=1ip=$(awk'NR==i{print$j}'i=$ij=$jmemory_info)let"j++"m=$(awk'NR==i{print$j}'i=$ij=$j内存信息)let"j++"f=$(awk'NR==i{print$j}'i=$ij=$jmemory_info)let"j++"t=$(awk'NR==i{print$j}'i=$ij=$jmemory_info)tr="
---|---|---|---|
"$ip" | ">>$HTML_PATHecho""$m" | ">>$HTML_PATH回显""$f" | ">>$HTML_PATH回显""$t" | ">>$HTML_PATH回显"