Pythonはあるサービスを監視し、サービスがクラッシュしてメールを送信することを実現する.
2113 ワード
前言:最近、私たちのアップグレードサーバーは少し不安定で、よくクラッシュします.その後、お客様が接続できず、私たちにフィードバックしてから知りました.だから、このスクリプトを書く目的は、お客様よりもアップグレードサービスの運行状況を事前に知っておくためで、いったん崩壊したら、最初にログインして、サービスを開いて、お客様の苦情を避けることができます.
ターゲット:Pythonはあるサービスを監視し、サービスがクラッシュしてメールレポートを送信することを実現する.
原理:サービスはポートに対応しており、サービスが閉じるとポートも閉じます.これにより、ポートを監視し、ポートを閉じてメールレポートを送信することができます.
方法:単純なメールサーバとポートプローブを使用する方法
くだらないことを言わないで直接コードをつけます.
ターゲット:Pythonはあるサービスを監視し、サービスがクラッシュしてメールレポートを送信することを実現する.
原理:サービスはポートに対応しており、サービスが閉じるとポートも閉じます.これにより、ポートを監視し、ポートを閉じてメールレポートを送信することができます.
方法:単純なメールサーバとポートプローブを使用する方法
くだらないことを言わないで直接コードをつけます.
#-*- encoding:utf-8 -*-
#!/usr/bin/env python
# name IsOpen.py
import os
import socket
import time
import smtplib
from email.mime.text import MIMEText
mailto_list=["[email protected]"]
mail_host="smtp.qq.com" #
mail_user="1234" #
mail_pass=" " #
mail_postfix="qq.com" #
def send_mail(to_list,sub,content): #to_list: ;sub: ;content:
me=" "+"" # hello , ,
msg = MIMEText(content,_subtype='html',_charset='gb2312') # , html
msg['Subject'] = sub #
msg['From'] = me
msg['To'] = ";".join(to_list)
try:
s = smtplib.SMTP()
s.connect(mail_host) # smtp
s.login(mail_user,mail_pass) #
s.sendmail(me, to_list, msg.as_string()) #
s.close()
return True
except Exception, e:
print str(e)
return False
def IsOpen(ip,port,flag):
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
s.connect((ip,int(port)))
s.shutdown(2)
print '%d is open' % port
return True
except:
print '%d is down' % port
return False
if __name__ == '__main__':
while(1>0):
flag=1
IsOpen('127.0.0.1',9906)
time.sleep(60)
flag=IsOpen('127.0.0.1',9906)
print flag
if flag==False:
send_mail(mailto_list,"XX ","error")
time.sleep(1800)
# , 9906 , ,