Zabbix+Python

郵件

  • smtp( Simple Mail Transfer Protocol)即簡單郵件傳輸協議,使用TCP協議25端口

  • 它是一組用於由源地址到目的地址傳送郵件的規則, 由它來控制信件的中轉方式

  • python的smtplib提供了一種很方便的途徑發送電子郵件。它對smtp協議進行了簡單的封裝

  • SMTP對象:Python發送郵件,第一步是創建SMTP對象

import smtplib  
smtp_obj= smtplib. SMTP( [host [ port [ local_hostname]]

創建SMTP對象也可以不給定參數,之後再通過對象 的其他方法進行綁定

  • 標準郵件需要三個頭部信息
    • From:發件人
    • To:收件人
    • Subject:主題
'''示例,本機郵件'''
from email.mime.text import MIMEText
from email.header import Header
import smtplib

# 準備郵件,plain表示純文本郵件
msg = MIMEText('Python email test.\n', 'plain', 'utf8')
msg['From'] = Header('root', 'utf8')
msg['To'] = Header('tom', 'utf8')
msg['Subject'] = Header('py test')

# 發送郵件
smtp = smtplib.SMTP('localhost')
smtp.sendmail('root', ['tom', 'jerry'], msg.as_bytes())
'''網絡郵件'''
from email.mime.text import MIMEText
from email.header import Header
import smtplib
from getpass import getpass


def send_email(body, sender, receivers, subject, server, passwd):
    # 準備郵件,plain表示純文本郵件
    msg = MIMEText(body, 'plain', 'utf8')
    msg['From'] = Header(sender, 'utf8')
    msg['To'] = Header(receivers[0], 'utf8')
    msg['Subject'] = Header(subject)

    # 發送郵件
    smtp = smtplib.SMTP()
    smtp.connect(server)
    # smtp.starttls()  # 類似於https,如果服務器要求加密,則啓用此語句
    smtp.login(sender, passwd)
    smtp.sendmail(sender, receivers, msg.as_bytes())


if __name__ == '__main__':
    body = 'Python發送郵件測試\n'
    sender = '[email protected]'
    receivers = ['[email protected]', '[email protected]']
    subject = 'py test'
    server = 'smtp.qq.com'
    passwd = getpass()
    send_email(body, sender, receivers, subject, server, passwd)

JSON

  • JSON(JavaScript Object Notation)是一種輕量級的數據交換格式
  • 易於人閱讀和編寫,同時也易於機器解析和生成
  • 基於 JavaScript Programming Language
  • JSON採用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C,++,c#,ava, JavaScript,perl, Python等)
  • 這些特性使JSON成爲理想的數據交換語言
  • 方法:
>>> import json
>>> d1 = {'name': 'tom', 'age': 20}
# 發送字典前,先將它轉成json字符串
>>> data = json.dumps(d1)
>>> type(data)
<class 'str'>
>>> data
'{"name": "tom", "age": 20}'
>>>
# 接收的json字符串通過loads轉成相應的數據類型
>>> jdata = json.loads(data)
>>> type(jdata)
<class 'dict'>
>>> jdata['name']
'tom'
>>> jdata['age']
20
# 訪問json數據
# 中國天氣網api地址
# 實況天氣獲取: http://www.weather.com.cn/data/sk/城市代碼.html
# 城市信息獲取: http://www.weather.com.cn/data/cityinfo/城市代碼.html
# 詳細指數獲取: http://www.weather.com.cn/data/zs/城市代碼.html
# 城市代碼通過搜索引擎搜索
>>> url3 = 'http://www.weather.com.cn/data/sk/101010300.html'
>>> r = requests.get(url3)
>>> r.json()    # 亂碼
>>> r.encoding  # 查看當前編碼
'ISO-8859-1'
>>> r.encoding = 'utf8'  # 修改字符編碼
>>> r.json()
{'weatherinfo': {'city': '朝陽', 'cityid': '101010300', 'temp': '28.4', 'WD': '東南風', 'WS': '小於3級', 'SD': '27%', 'AP.6hPa', 'njd': '暫無實況', 'WSE': '<3', 'time': '17:55', 'sm': '1.7', 'isRadar': '1', 'Radar': 'JC_RADAR_AZ9010_JB'}}

requests模塊

  • Requests是優雅而簡單的HTTP庫
  • Requests內部採用urillib3
  • Requests使用起來會比urillib3更簡單便捷
  • Requests需要單獨安裝

特性:

  • 支持keep -alive-的連接池
  • 支持通用的域名以及URL地址
  • 支持使用 cookie
  • 支持使用類似瀏覽器的SSL驗證
  • 文件上傳、下載
[root@localhost day02] pip3 install requests
>>> import requests
# 訪問文本類型的數據
>>> url1 = 'http://www.163.com'
>>> r = requests.get(url1)
>>> r.text

# 訪問非文本文件數據,如圖片、壓縮包
>>> url2 = 'http://pic.kaixin001.com/pic/app/2/26/2_45022680_diary.jpeg'
>>> r = requests.get(url2)
>>> r.content
>>> with open('/tmp/cat.jpg', 'wb') as fobj:  # 保存到文件
...   fobj.write(r.content)

使用阿里雲api

  • http://www.aliyun.com -> 雲市場 -> api市場
  • 在api市場購買某一產品,如[杭州網尚科技的天氣預報]後,點擊“管理控制檯”進
    入,可以查看APPCODE
>>> url = 'http://jisutqybmf.market.alicloudapi.com/weather/query'  #地址
>>> headers = {'Authorization': 'APPCODE 你的APPCODE'}  #請求頭
>>> params = {'citycode': '101010300'}  #參數
>>> r = requests.get(url, headers=headers, params=params)
>>> r.json()

>>> url4 = 'http://icalendar.market.alicloudapi.com/ai_metaphysics/calendar/elite'
>>> headers = {'Authorization': 'APPCODE 你的APPCODE'}
>>> params = {'STRING': '20200325150330'}
>>> r = requests.get(url4, headers=headers, params=params)
>>> r.json()

釘釘機器人

  • https://www.jianshu.com/p/a3c62eb71ae3
  • https://im.dingtalk.com/ 釘釘web版 -> 創建羣 -> 創建羣聊機器人 -> 自定>義webhook類型
  • 說明文檔:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq

Zabbix編程

  • zabbix官方文檔
  • Zabbix apia允許你以編程方式檢索和修改 Zabbix的 配置,並提供對歷史數據的訪問。
  • 它廣泛用於
    • 創建新的應用程序以使用 Abbi
    • 將 Zabbix與第三方軟件集成
    • 自動執行常規任務
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章