设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

QQ登录

只需一步,快速开始

#公告#抱歉,网站将关闭,不再开放。由于PC时代已远逝 。在这个后移动互联网时代,我们继续携手前行,保持对技术的热情。共同构建linuxtone知识星球欢迎加入,一起讨论技术、招聘人才、分享资源。请新老linuxtone人 扫码移步到 知识星球:linuxtone

学习是一种信仰!分享是一种快乐!能力= 心态 * 沟通 * 知识 (你的每一天需要正能量!)

 网站的发展需要你贡献一份力量!希望你能每天坚持看贴1小时,并回答网友的问题!祝你在浏览论坛的过程中取得进步!谢谢!linuxtone加油!大家加油! 友情提示: 你今天学习了吗?你今天进步了吗?少一点抱怨!多一点进步!Life is short ! Why not linuxtone ?  

网站的发展、感谢每位坛友的努力!

查看: 3311|回复: 4

python插件做nagios发报警邮件 [复制链接]

Rank: 6Rank: 6

签到
81
注册时间
2010-10-28
最后登录
2013-10-16
在线时间
167 小时
阅读权限
70
积分
2302
帖子
133
主题
16
精华
0
UID
10745
发表于 2010-12-22 10:12:10 |显示全部楼层

      安装好nagios后,一直利用nagios服务器上的sendmail服务器去发邮件,修改配置文件可以伪造别的邮件地址发邮件,但是一直会被邮局视为垃圾邮件,我把email地址加在了QQ上,好处是一来邮件QQ右下角会弹提示。工作时间会第一时间知道服务器出状况(手机短信暂时不提),但是如果是垃圾邮件,QQ不会提醒的,当然可以在QQ邮箱把其添加为信任邮局,可以避免。我就不那么浪费时间了。自己写一个发邮件的插件来替换掉本机的sendmail服务,可以为服务器节省资源,大家也知道启动sendmail服务稍稍费点时间,如果主机名没有设置好的话sendmail服务会启动很久才能起来的哦。废话不多说了,发源代码。
nagios $> cat /usr/local/nagios/libexec/sendmail#!/usr/bin/pythonimport smtplibimport stringimport sysimport getoptdef usage():   print """sendmail is a send mail Plugins   Usage:   sendmail [-h|--help][-t|--to][-s|--subject][-m|--message]   Options:          --help|-h)                 print sendmail help.          --to|-t)                 Sets sendmail to email.          --subject|-s)                  Sets the mail subject.          --message|-m)                  Sets the mail body    Example:           only one to email  user          ./sendmail -t 'eric@nginxs.com' -s 'hello eric' -m 'hello eric,this is sendmail test!           many to email  user          ./sendmail -t 'eric@nginxs.com,yangzi@nginxs.com,zhangsan@nginxs.com' -s 'hello eric' -m 'hello eric,this is sendmail test!"""   sys.exit(3)try:   options,args = getopt.getopt(sys.argv[1:],"ht:s:m:","--help --to= --subject= --message=")except getopt.GetoptError:   usage()for name,value in options:    if name in ("-h","--help"):       usage()    if name in ("-t","--to"):# accept message user       TO = value       TO = TO.split(",")    if name in ("-s","--title"):       SUBJECT = value    if name in ("-m","--message"):       MESSAGE = value#smtp HOSTHOST = "smtp.126.com"               #改为你的邮局SMTP 主机地址#smtp portPORT = "25"                               #改为你的邮局的SMTP 端口#FROM mail userUSER = 'eric'                              # 改为你的邮箱用户名#FROM mail passwordPASSWD = '123456'                    # 改为你的邮箱密码#FROM EMAILFROM = "yangzi2008@126.com"    # 改为你的邮箱 emailtry:   BODY = string.join((      "From: %s" % FROM,      "To: %s" % TO,      "Subject: %s" % SUBJECT,      "",      MESSAGE),"\r\n")   smtp = smtplib.SMTP()   smtp.connect(HOST,PORT)   smtp.login(USER,PASSWD)   smtp.sendmail(FROM,TO,BODY)   smtp.quit()except:   print "UNKNOWN ERROR"   print "please look help"   print "./sendmail -h"使用方法:
只给一个用户发:
nagios $> ./sendmail -t 'eric@nginxs.com' -s 'hello eric' -m 'hello eric,this is sendmail test!给多个用户发:
./sendmail -t 'eric@nginxs.com,yangzi@nginxs.com,zhangsan@nginxs.com' -s 'hello eric' -m 'hello eric,this is sendmail test!如果利用在nagios 上修改 commands.cfg
# 还为测试·马上就测试。怕的是换行符有问题·
nagios $> vim /usr/local/nagios/etc/objects/commands.cfgdefine command{        command_name    notify-host-by-email        command_line    $USER1$/sendmail -t $CONTACTEMAIL$ -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **"  -m  "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n"        }define command{        command_name    notify-service-by-email        command_line    $USER1$/sendmail -t  $CONTACTEMAIL$ -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **"  -m  "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$"        }有图有真相:



插件下载地址
sendmail



本文出自 “linuxer” 博客,http://deidara.blog.51cto.com/400447/461008

Rank: 6Rank: 6

注册时间
2010-8-25
最后登录
2015-9-11
在线时间
25 小时
阅读权限
70
积分
4949
帖子
34
主题
3
精华
0
UID
10204
发表于 2011-1-26 11:37:17 |显示全部楼层
支持一下

使用道具 举报

Rank: 6Rank: 6

注册时间
2009-5-23
最后登录
2014-8-19
在线时间
76 小时
阅读权限
70
积分
8957
帖子
101
主题
6
精华
0
UID
3211
发表于 2011-1-27 13:29:18 |显示全部楼层
帮你顶一个!

使用道具 举报

注册时间
2012-2-7
最后登录
2012-4-11
在线时间
5 小时
阅读权限
0
积分
1530
帖子
139
主题
10
精华
0
UID
17695
发表于 2012-3-23 23:27:50 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

使用道具 举报

Rank: 8Rank: 8

注册时间
2012-1-8
最后登录
2013-3-28
在线时间
28 小时
阅读权限
90
积分
14427
帖子
6
主题
1
精华
0
UID
17222
发表于 2012-3-24 14:37:28 |显示全部楼层
顶LZ,最近在学习python

LS的广告做得到处都是哇!!!

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢您的支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2020-4-7 05:51 , Processed in 0.018371 second(s), 10 queries , Apc On.

Powered by Discuz! X2 Licensed

© 2001-2011 Comsenz Inc.

回顶部