Python监控主机是否存活并以邮件报警
admin
2023-07-31 02:35:22
0

利用Python写了简单测试主机是否存活脚本,此脚本不适于线上使用,因为网络延迟、丢包现象会造成误报邮件,那么后续会更新判断三次ping不通后再发报警邮件,并启用多线程处理。

#!/usr/bin/env python 
# coding:UTF-8 
import time 
import pexpect 
import smtplib 
from email.mime.text import MIMEText 
mail_host = \"smtp.163.com\"    #定义smtp服务器 
mail_to = \"baojingtongzhi@163.com\" #邮件收件人 
mail_from = \"monitor@163.com\"   #邮件发件人 
mail_pass = \"123456\"      #邮件发件人邮箱密码 
while True: 
  def Mail(error_ip): 
    date = time.strftime(\'%Y-%m-%d %H:%M:%S\') 
    msg = MIMEText(\"%s Ping %s failed from 255.252.\" % (date, error_ip)) 
    msg[\'Subject\'] = \"Ping %s failed.\" % error_ip  #定义邮件主题 
    msg[\'From\'] = mail_from 
    msg[\'To\'] = mail_to 
    try: 
      s = smtplib.SMTP()        #创建一个SMTP()对象 
      s.connect(mail_host, \"25\")      #通过connect方法连接smtp主机 
      s.starttls()          #启动安全传输模式 
      s.login(mail_from,mail_pass)     #邮箱账户登录认证 
      s.sendmail(mail_from, mail_to, msg.as_string()) #邮件发送 
      s.quit()   #断开smtp连接 
    except Exception, e: 
      print str(e) 
  ip_list = [\'192.168.18.10\', 
    \'192.168.18.11\', 
    \'192.168.18.12\'] 
  for ip in ip_list: 
    ping = pexpect.spawn(\'ping -c 1 %s\' % ip) 
    check = ping.expect([pexpect.TIMEOUT,\"1 packets transmitted, 1 received, 0% packet loss\"],2)  #2代表超时时间 
    if check == 0: 
      Mail(ip) 
      print \"Ping %s failed,Have email.\" % ip 
    if check == 1: 
      print \"Ping %s successful.\" % ip 
  print \"Sleep 10s...\"
  time.sleep(10)
#直接运行
# python ping.py 
Ping 192.168.18.10 successful.
Ping 192.168.18.11 successful.
Ping 192.168.18.12 successful.
Sleep 10s...

以上就是本文的全部内容,希望对大家学习Python监控主机是否存活并以邮件报警有所帮助。

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...