一.python郵件發送腳本
1.linux服務器發送郵件,許多人會直接用mail命令發送,雖然可以發送成功,但是許多都會被互聯網郵箱當初垃圾郵件處理
2.mutt和msmtp相關於linux下的郵件客戶端,和windows上的outlook,foxmail之類有點類似
3.安裝mutt和msmtp雖然可以,但是通過python腳本也可以代替,如下
ubuntu@ubuntu:/etc/nagios3/scripts$ cat sendmail
#!/usr/bin/python
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 '[email protected]' -s 'hello eric' -m 'hello eric,this is sendmail test!
many to email user
./sendmail -t '[email protected],[email protected],[email protected]' -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.126.com" (這個是126的smtp服務域名)
#smtp port
PORT = "25" (126郵箱smtp端口號)
#FROM mail user
USER = 'Czar_test' (你註冊126郵箱的用戶名)
#FROM mail password
PASSWD = 'test123' (你註冊126郵箱的密碼)
#FROM EMAIL
FROM = "[email protected]" (你的126郵箱地址)
try:
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"
然後測試發送郵件
ubuntu@ubuntu:/etc/nagios3/scripts$ /etc/nagios3/scripts/sendmail -t "[email protected]" -s "Nagios Test" -m "Hello Wrold"
二.nagios命令文件裏面添加代碼
ubuntu@ubuntu:/etc/nagios3$ vim commands.cfg
define command{
command_name notify-host-by-email
command_line /etc/nagios3/scripts/sendmail -t $CONTACTEMAIL$ -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" -m "%b" -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 /etc/nagios3/scripts/sendmail -t $CONTACTEMAIL$ -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -m "%b" -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$\n"
}