楼主公司之前一直都有短信接口 报警都是自己写脚本通过短信方式来报警,但今天领导突然要求 收到nagios邮件报警,楼主一时激动 写个python的小程序吧,希望对大家有帮助
vim /usr/local/nagios/libexec/sendmail
#!/usr/bin/python
#-*- coding: UTF-8 -*-
import smtplib
import string
import sys
import getopt
def 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
MESSAGE = MESSAGE.split('\n')
MESSAGE = 'n'.join(MESSAGE)
#smtp HOST
HOST = ""
#smtp port
PORT = ""
#FROM mail user
USER = ''
#FROM mail password
PASSWD = ''
#FROM EMAIL
FROM = ""
try:
BODY = string.join((
"From: %s" % FROM,
"To: %s" % TO,
"Subject: %s" % SUBJECT,
"",
MESSAGE),"rn")
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"
chmod +x /usr/local/nagios/libexec/sendmail
vim /usr/local/nagios/etc/object/commands.cfg
define command{
command_name
notify-service-by-email
command_line
$USER1$/sendmail -t $CONTACTEMAIL$ -s "**
$NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is
$SERVICESTATE$ **" -m "***** Nagios
*****nnNotification Type: $NOTIFICATIONTYPE$nnService:
$SERVICEDESC$nHost: $HOSTALIAS$nAddress: $HOSTADDRESS$nState:
$SERVICESTATE$nnDate/Time: $LONGDATETIME$
nnAdditional Info:nn$SERVICEOUTPUT$"
即可收到邮件 简单吧 比网上的方法简单的多
expect批量同步数据
下一篇:bugzilla新邮箱的设置