1、短信接口文檔:
URL
http://xxx.com/interfaces/sendMsg.htm
Method
POST
Description
文字短信調用接口
Request Param List
Name | Identifier | Type | Remark |
---|---|---|---|
短信簽名 | sign | string | 格式為 【某某平台】 中文括號不可少 |
信息內容 | msg | string | |
手機號 | phoneNumber | string |
Response Param List
Name | Identifier | Type | Remark |
---|---|---|---|
返回值 | string | 提交失敗 {"msg":"","success":"F"} 提交成功 {"msg":"","success":"T"} |
2、自定義端口post方式以及python腳本:
#!/usr/bin/env python #-*- coding:utf-8 -*- #Author:lzd import sys import urllib.request import urllib.parse #請求 msg = sys.argv[2] phoneNumber = sys.argv[1] data = { 'msg':msg, 'phoneNumber':phoneNumber, } data = urllib.parse.urlencode(data).encode('utf-8') resu = urllib.request.urlopen('http://xxx.com/interfaces/sendVoice.htm', data = data) #指定編碼請求 #print(resu.read().decode('utf-8')) a=open('/tmp/abc.log','a') a.write(sys.argv[1]+resu.read().decode('utf-8')+'\n' ) a.close()
3、將sms2.py拷貝到路徑/usr/lib/zabbix/alertscripts
4、設置sms2.py的權限為chmod 777 sms2.py
把日志文件abc.log也要chmod 777 abc.log
5、注意sms2.py在centos一定要可以直接執行,而不是python sms2.py這種方式直接。后面加兩個參數手機號碼+內容
6、設置zabbix里的triggers
7、設置media type,注意這里的三個變量一定要加進去。
8、最后設置動作:actions
當triggers名稱為,或者安全級別為什么的時候就觸發動作,直接發送短信,選擇對應的人和動作!
#!/usr/bin/python #coding:utf-8 import smtplib from email.mime.text import MIMEText import sys mail_host = 'smtp.189.cn' mail_user = '13913913913' mail_pass = 'xxxxx' mail_postfix = '189.cn' def send_mail(to_list,subject,content): me = "zabbix 監控告警平台"+"<"+mail_user+"@"+mail_postfix+">" msg = MIMEText(content, 'plain', 'utf-8') msg['Subject'] = subject msg['From'] = me msg['to'] = to_list try: s = smtplib.SMTP() s.connect(mail_host) s.login(mail_user,mail_pass) s.sendmail(me,to_list,msg.as_string()) s.close() return True except Exception as e: print (e) return False #if __name__ == "__main__": send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
SSL郵件發送python代碼:
#!/usr/bin/env python #-*- coding:utf-8 -*- #Author:lzd import smtplib from email.mime.text import MIMEText from email.utils import formatdate from email.header import Header import sys # 設置默認字符集為UTF8 不然有些時候轉碼會出問題 default_encoding = 'utf-8' if sys.getdefaultencoding() != default_encoding: reload(sys) sys.setdefaultencoding(default_encoding) # 發送郵件的相關信息,根據你實際情況填寫 smtpHost = 'smtp.exmail.qq.com' smtpPort = '25' sslPort = '465' fromMail = 'xxx@17of.com' # toMail = '997939@qq.com' username = 'xxx@17of.com' password = 'xxxxx' def send_mail(to_list, subject, content): # 郵件標題和內容 # subject = u'[Notice]hello' # body = u'hello,this is a mail from ' + fromMail # 初始化郵件 encoding = 'utf-8' mail = MIMEText(content.encode(encoding), 'plain', encoding) mail['Subject'] = Header(subject, encoding) mail['From'] = fromMail mail['To'] = to_list mail['Date'] = formatdate() try: # 連接smtp服務器,明文/SSL/TLS三種方式,根據你使用的SMTP支持情況選擇一種 # 普通方式,通信過程不加密 # smtp = smtplib.SMTP(smtpHost, smtpPort) # smtp.ehlo() # smtp.login(username, password) # tls加密方式,通信過程加密,郵件數據安全,使用正常的smtp端口 # smtp = smtplib.SMTP(smtpHost,smtpPort) # smtp.set_debuglevel(True) # smtp.ehlo() # smtp.starttls() # smtp.ehlo() # smtp.login(username,password) # 純粹的ssl加密方式,通信過程加密,郵件數據安全 smtp = smtplib.SMTP_SSL(smtpHost,sslPort) smtp.ehlo() smtp.login(username,password) # 發送郵件 smtp.sendmail(fromMail, to_list, mail.as_string()) smtp.close() print("OK") except Exception as e: print("e") send_mail(sys.argv[1], sys.argv[2], sys.argv[3])