A. linux下shell脚本PING命令只要延迟高于100ms就发送个邮件
#!/bin/bash第三行Timeout_limit值写错了,应该是100哈,代码提交了不能改了。你这个不需要把延迟结果保存在文件的,而是应该需要作定时检测的。
Timeout=0;
Timeout_limit=1;
Timeout_flag=0;
IP="8.8.8.8"
while [ 1 ]
do
# 取平均延迟的整数位
Timeout="`ping $IP -c 3 | grep 'min/avg/max/mdev'|awk '{print $4}'|cut -b ƍ'`"
if [ $Timeout -ge $Timeout_limit ] && [ $Timeout_flag -ne 1 ]; then
echo ping timeout, average delay=$Timeout ms
mail -s 'Ping Delay' 邮箱 < ar/log/boot.log
Timeout_flag=1
fi
if [ $Timeout -lt $Timeout_limit ] && [ $Timeout_flag -ne 0 ]; then
echo ping recovery, average delay=$Timeout ms
mail -s 'Ping recovery' 邮箱 < ar/log/boot.log
Timeout_flag=0
fi
sleep 5
done
B. Linux设置邮件提醒
《Linux设置定时任务》 一文中,我们学习了使用crontab设置定时任务的方法,并用它来获取ganglia的运行状态。这样还不够,我们想要在ganglia的运行状态出现问题时通知我们,这样,我们就不用每天自己查看日志了。
本文主要参考 Ubuntu mail命令发送邮件 和 如何通过Shell脚本实现发送邮件通知功能? 。
1、安装mailutils
sudo apt-get install mailutils
2、General type of mail configuration选择Internet Site。
3、System mail name输入mail.voidking.com。
命令格式:
mail [OPTION...] [address...]
常用到的选项,一个是s,代表主题;一个是A,代表附件。其他的需要时查看help。
目标:给邮箱 [email protected] 发送邮件,主题为“Hello VoidKing”,内容为“Welcome to mail world!”
mail -s 'Hello VoidKing' [email protected]
提示Cc,这里不需要抄送,就直接回车。然后输入邮件内容“Welcome to mail world!”,回车,ctrl+D,发送邮件。
但是,等待了几分钟,并没有收到邮件,垃圾箱也没有。
mail ,查看email的发送状态为Undelivered Mail Returned,原来没有投递出去。
查看邮件系统日志: tail -n 50 /var/spool/mail/test ,提示host mx3.qq.com[183.57.48.35] said: 550 Mail content denied。看来qq邮箱的垃圾邮件防御机制做的不错,那就换个163邮箱,没想到依然失败。
那就换一台服务器!发送给 [email protected] ,成功!很尴尬。。。
除了上面的方式发送邮件,我们还可以使用:
mail -s 'Hello VoidKing' [email protected] <<< 'Welcome to mail world!'
或者使用:
echo 'Welcome to mail world!' | mail -s "Hello VoidKing" [email protected]
1、从文本读入内容发送邮件
mail -s 'Error report' [email protected] < /tmp/log/ganglia/error-20180524.log
2、发送附件
mail -s 'Error report' [email protected] -A /tmp/log/ganglia/ganglia-20180524.log < /tmp/log/ganglia/error-20180524.log
3、指定发件人
echo 'Welcome to mail world!' | mail -s "Hello VoidKing" [email protected] -aFrom:[email protected]
失败了,收不到邮件,不知道什么原因,留个坑吧。
目标:每天获取一次ganglia的状态日志,然后通过checkganglia.sh脚本进行审阅。审阅完毕,发送审阅结果到管理员的邮箱。
修改checkganglia.sh脚本为:
至此,大功告成! 《Linux设置定时任务》 配合 《Linux设置邮件提醒》 ,简直完美!两篇文章完成了一个小系统:定时生成ganglia日志,定时审阅ganglia日志,并且把审阅结果通过邮件发送给管理员。
Linux命令大全——LMNOPQ
如何在Ubuntu环境下搭建邮件服务器(一)
C. linux 发邮件python脚本怎么检查是否发送成功
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#导入smtplib和MIMEText
import smtplib,sys
from email.mime.text import MIMEText
def send_mail(sub,content):
#############
#要发给谁,这里发给1个人
mailto_list=["[email protected]"]
#####################
#设置服务器,用户名、口令以及邮箱的后缀
mail_host="mail.gyyx.cn"
mail_user="[email protected]"
mail_pass="123456677890"
mail_postfix="gyyx.cn"
######################
'''''
to_list:发给谁
sub:主题
content:内容
send_mail("[email protected]","sub","content")
'''
me=mail_user+"<"+mail_user+"@"+mail_postfix+">"
msg = MIMEText(content,_charset='gbk')
msg['Subject'] = sub
msg['From'] = me
msg['To'] = ";".join(mailto_list)
try:
s = smtplib.SMTP()
s.connect(mail_host)
s.login(mail_user,mail_pass)
s.sendmail(me, mailto_list, msg.as_string())
s.close()
return True
except Exception, e:
print
D. linux中群发不同邮件到不同的邮箱脚本怎么写
一、修改/etc/mail.rc //在最后面追加就行,也可以 echo >>
set [email protected] //你自己的真实邮箱地址
set smtp=smtp.exmail.qq.com //在邮箱设置,客户端设置,设置方法,发送服务器里
set [email protected] //自己邮箱真实地址
set smtp-auth-password=123456 //自己邮箱密码
set smtp-auth=login
:wq
二、到这里已经实现实现外部邮箱发送mail了,可以命令行输入
echo "Test Mail" | mail -s "Test" [email protected]
########################################################################
也可以写脚本:
#!/bin/bash
user="
目标1 [email protected]
目标2 [email protected]
……
"
userlist=`echo -e "${user}" | awk ‘{print $2}‘`
echo $userlist
mail -v -s "测试邮件" $userlist < test.txt
:wq
其中:
-v 显示详细信息
-s 邮件标题
test.txt 是你要输入邮件的内容
然后crontab -e 编辑计划任务,就可以实现定时发送邮件啦!