Python实现端口监控与崩溃自动邮件告警脚本

Ada
Ada
发布时间:2026-10-13 | 1人浏览过
原创

本文介绍如何利用Python监控特定服务的端口状态,当服务崩溃导致端口关闭时,自动通过SMTP服务器发送报警邮件。脚本包含端口探测逻辑与邮件发送模块,支持自定义监测频率与延迟,旨在帮助运维人员提前发现服务异常并及时恢复,避免客户投诉。

前言:近期我们的升级服务器运行状态不够稳定,频繁出现崩溃现象。由于缺乏实时预警,往往是客户无法连接并反馈后,我们才得知服务中断。因此,编写此脚本的核心目的是建立比客户更早的服务状态感知机制,一旦检测到服务崩溃,即可第一时间登录服务器重启服务,从而有效避免客户投诉。

目标:使用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=["872766492@qq.com"]  
mail_host="smtp.qq.com" #设置服务器 
mail_user="1124794084"  #用户名 
mail_pass="密码"  #口令  
mail_postfix="qq.com" #发件箱的后缀 
  
def send_mail(to_list,sub,content): #to_list:收件人;sub:主题;content:邮件内容 
  me="升级服务器报告"+"<"+mail_user+"@"+mail_postfix+">"  #这里的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消失则发送邮件报告,设置延迟为半小时,避免一直重复发送邮件 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表