zabbix之微信告警(python版):微信個人報警,微信企業號告警腳本


                            微信個人告警腳本

微信個人告警:使用個人微信,發送到微信群組,微信好友

兩個腳本執行:

1)能連接網絡
2)先執行server.py,掃描登錄微信,登錄之后沒有報錯,打開新終端查看端口是否起來了
3)在zabbix上面添加報警媒介,將personsend.py 腳本添加進去

4)pip install wxpy wechat_sender -i https://pypi.douban.com/simple

-----------------------------------------------server.py

#-* coding:utf-8
from wechat_sender import *
from wxpy import *
import logging

import sys
defaultencoding = 'utf-8'
if sys.getdefaultencoding() != defaultencoding:
  reload(sys)
  sys.setdefaultencoding(defaultencoding)
bot = Bot(console_qr=True)
group = bot.groups().search(unicode('微信測試'))[0]
#group2 = bot.groups().search(unicode('ITstone'))[0]
logging.basicConfig(level=logging.DEBUG)
#group.send("接入成功!")
#group2.send("接入成功!")
print("微信登陸成功!進行監控報警功能!")
print(group)
listen(bot, token='test', receivers=[group],port=12222)
#listen(bot, token='test2', receivers=[group2],port=15556)
-----------------------------------------------personsend.py 
#!/usr/local/python/bin/python
# -*- coding:UTF-8 -*-
from wechat_sender import *
import time
import sys
defaultencoding = 'utf-8'
if sys.getdefaultencoding() != defaultencoding:
    reload(sys)
    sys.setdefaultencoding(defaultencoding)
import ssl
context = ssl._create_unverified_context()
#sender = Sender(token='test2', receivers=unicode('ITstone'),port=15556)
sender2 = Sender(token='test', receivers=unicode('微信測試'),port=15555)    #設置微信群和監聽端口
#while True:
#    time.sleep(10)
# sender.send(message=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
#    sender.send(message='測試數據'+time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
messeges=sys.argv[2]+sys.argv[3]
#sender.send(message=messeges)
sender2.send(message=messeges)

 

                          微信企業號告警腳本

 下面的這個微信腳本從網上拉取下來的,后面由於微信更新,修改了倒數第三行的值

import json
import sys
import simplejson
reload(sys)
sys.setdefaultencoding('utf-8')
def gettoken(corpid,corpsecret):
    gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
    print  gettoken_url
    try:
        token_file = urllib2.urlopen(gettoken_url)
    except urllib2.HTTPError as e:
        print e.code
        print e.read().decode("utf8")
        sys.exit()
    token_data = token_file.read().decode('utf-8')
    token_json = json.loads(token_data)
    token_json.keys()
    token = token_json['access_token']
    return token
def senddata(access_token,user,subject,content,itemid):
    send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
    send_values = {
        "touser":user,    #企業號中的用戶帳號,在zabbix用戶Media中配置,如果配置不正常,將按部門發送。
        "toparty":"2",    #企業號中的部門id。
        "msgtype":"text", #消息類型。
        "agentid":"1000002",    #企業號中的應用id。
        "text":{
            "content":subject + '\n' + content
           },
        "safe":"0"
        }
    send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')
    send_request = urllib2.Request(send_url, send_data)
    response = json.loads(urllib2.urlopen(send_request).read())
    print str(response)
if __name__ == '__main__':
    user = str(sys.argv[1])     #zabbix傳過來的第一個參數
    subject = str(sys.argv[2])  #zabbix傳過來的第二個參數
    content = str(sys.argv[3])  #zabbix傳過來的第三個參數
    itemid=1
    corpid =  'ww22655492448f1e3b'   #CorpID是企業號的標識
#    corpsecret = 'e62ikstjInYq8vAp7mjDmQylO6DlA2a-CH86YpRxd38'  #corpsecretSecret是管理組憑證密鑰
    corpsecret='deH66xl3FZVFhcmKhGfnAHHIlXAOS_Nh76ODn7ZsmU4'    #'這里填寫應用對應的secret'
    accesstoken = gettoken(corpid,corpsecret)
    senddata(accesstoken,user,subject,content,itemid)

參考:

1)wechat_sender github主頁  

2)桑心病狂,試試把報警日志發到微信上

3)企業微信開發者文檔

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM