python3.6 모니터링 서버 온라인, 오프라인 자동 메일 발송

2217 단어 놀다
수중에 몇 대의 서버가 있는데 만약에 서버에 문제가 생기면 제때에 사람들에게 통지할 수 있기를 바랍니다. 생각해 보니 작은 도구를 써서 사용했습니다. 주요 기능은 서버 IP에 따라 핑을 해서 서버가 온라인인지 확인하고 서버가 온라인이 아니면 자동으로 우편물 통지를 보내는 것입니다.시간 문제로 쓸모가 없다.sh의 파일을 처리하는 데 효율이 높지 않고 소량의 서버에서만 사용할 수 있습니다.다음은 웹 페이지를 만들어서 서버의 온라인 상황을 보여주는 것을 고려할 수 있다. 이렇게 하면 비교적 직관적이다.
# -*- coding=utf-8 -*-
import os
import sys
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

class server:
    def __init__(self):
        self.iplist = list()
        self.my_sender = '' # 
        self.my_pass = '' # ,POP3 
        self.my_user = '' # 
        self.down_ip = ' 
' self.up_ip = '
' def read_ip(self): f = open(r'server_ip.txt') # IP ip self.lines = f.readlines() def mail(self): try: msg = MIMEText(self.down_ip,'plain','utf-8') msg['From'] = formataddr(["manunkind",self.my_sender]) msg['To'] = formataddr(["manunkind",self.my_user]) msg['Subject'] = "server down" server = smtplib.SMTP_SSL("smtp.qq.com", 465) server.login(self.my_sender, self.my_pass) server.sendmail(self.my_sender,[self.my_user,],msg.as_string()) server.quit() print("Mail sent successfully") except Exception: print("Mail delivery failed") def ping_server(self): for ip in self.lines: if '.'in ip: backinfo = os.system('ping -n 5 -w 30 %s'%ip) if backinfo: self.down_ip = self.down_ip + ip else: self.up_ip = self.up_ip + ip else: print('
'+ip) self.down_ip = '
'+ self.down_ip+ip self.up_ip = '
'+ self.up_ip+ip if '.' in self.down_ip: self.mail() print(self.up_ip) if __name__ == '__main__': sIP = server() sIP.read_ip() sIP.ping_server()

좋은 웹페이지 즐겨찾기