中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • Python實現監控Nginx配置文件的不同并發送郵件報警功能示例

Python實現監控Nginx配置文件的不同并發送郵件報警功能示例

發布時間:2020-09-18 09:27:09 來源:腳本之家 閱讀:188 作者:亂彈世界 欄目:開發技術

本文實例講述了Python實現監控Nginx配置文件的不同并發送郵件報警功能。分享給大家供大家參考,具體如下:

因為項目中經常涉及到多個Nginx之間的配置文件更改,可能回導致最后Nginx之間的配置文件有所不同,這樣會對項目產生影響,最典型的就是可能當訪問域名解析到其中一臺Nginx的時候,可能是正常的,當域名解析到另外一臺Nginx的時候,由于配置文件的不同,導致訪問出錯之類的,影響體驗,所以用python寫了一個監控配置文件不同的腳本,如果發現不同,就報警,并且以HTML的形式發送郵件指出具體的文件不同地方。

下面是代碼:

#!/usr/bin/python2.7
# -*- encoding: utf-8 -*-
import difflib ##用于文件比較的庫
import sys
import smtplib
import getpass
from os.path import getsize
from email.MIMEText import MIMEText
#檢查文件的大小是否相同
def check_files_size(file1, file2):
  size1 = getsize(file1)
  size2 = getsize(file2)
  if int(size1) != int(size2):
  return True
#比較文件的內容,并且聲稱HTML頁面
def files_compare(file1, file2):
  text1_lines = file1.splitlines()
  text2_lines = file2.splitlines()
  d = difflib.HtmlDiff()
  msg = d.make_file(text1_lines, text2_lines)
  return msg
#郵件報警,使用Linux自帶的postfix發送郵件
def alert_by_email(subject, msg, mailto):
  senduser = getpass.getuser()###獲取當前Linux登錄的用戶
  smail = smtplib.SMTP('127.0.0.1')
  #smail.set_debuglevel(1) ##設置為調試模式,可以看到郵件發送的過程和成功與否
  message = MIMEText(msg, 'html', _charset='utf-8')
  message['From'] = senduser
  message['To'] = mailto
  message['Subject'] = subject
  smail.sendmail('root@localhost', mailto, message.as_string())
  smail.quit()
if __name__ == '__main__':
  reload(sys)
  sys.setdefaultencoding('utf-8')#設置編碼為utf-8
  file1 = '/home/*/nginx1/nginx.conf'
  file2 = '/home/*/nginx2/nginx.conf'
  mailto = '***@***' #發送到你想要接收的郵箱地址
  subject = u'nginx配置文件監控' #郵件主題
  if check_files_size(file1, file2) == True: #如果兩個文件大小不同,就進行文件內容比較,發送郵件報警
  with open(file1) as f:
    text1 = f.read().strip()
  with open(file2) as f:
    text2 = f.read().strip()
  msg = files_compare(text1, text2)
  alert_by_email(subject, msg, mailto)
  else:
  sys.exit(0)

這里貼上報警截圖:

Python實現監控Nginx配置文件的不同并發送郵件報警功能示例

總體的思路就是:增加一臺管理控制機器,然后備份不同服務器上的Nginx配置文件,使用上面的檢測腳本進行監控,每隔十分鐘或者你想要的時間長度進行監控(crontab定時任務就可以)。

以上就是實踐過程中遇到的問題和解決思路,如果有錯誤或者更好的方法,還請各位大神幫忙指正。

更多關于Python相關內容可查看本站專題:《Python Socket編程技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》

希望本文所述對大家Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绥中县| 龙江县| 保亭| 全州县| 乌海市| 黄山市| 资兴市| 修文县| 定安县| 江达县| 光泽县| 新民市| 广安市| 安远县| 兴海县| 商城县| 平定县| 正安县| 香港| 宜春市| 新闻| 济源市| 丁青县| 阿拉尔市| 苏尼特左旗| 大化| 互助| 青阳县| 丹巴县| 攀枝花市| 马关县| 墨脱县| 比如县| 合川市| 毕节市| 扬州市| 石嘴山市| 册亨县| 四平市| 西城区| 凭祥市|