Python监控主机是否存活,并发报警邮件

简介: Python监控主机是否存活,并发报警邮件

 利用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...

相关文章
|
8月前
|
存储 监控 算法
监控电脑屏幕的帧数据检索 Python 语言算法
针对监控电脑屏幕场景,本文提出基于哈希表的帧数据高效检索方案。利用时间戳作键,实现O(1)级查询与去重,结合链式地址法支持多条件检索,并通过Python实现插入、查询、删除操作。测试表明,相较传统列表,检索速度提升80%以上,存储减少15%,具备高实时性与可扩展性,适用于大规模屏幕监控系统。
227 5
|
11月前
|
存储 运维 监控
基于跳表数据结构的局域网上网记录监控时序查询优化算法研究与 Python 实现
本文探讨跳表(Skip List)在局域网上网记录监控中的应用,分析其在快速范围查询、去重与异常检测中的优势,并提供 Python 实现示例,为高效处理海量时序数据提供参考。
226 0
|
监控 算法 安全
深度洞察内网监控电脑:基于Python的流量分析算法
在当今数字化环境中,内网监控电脑作为“守城卫士”,通过流量分析算法确保内网安全、稳定运行。基于Python的流量分析算法,利用`scapy`等工具捕获和解析数据包,提取关键信息,区分正常与异常流量。结合机器学习和可视化技术,进一步提升内网监控的精准性和效率,助力企业防范潜在威胁,保障业务顺畅。本文深入探讨了Python在内网监控中的应用,展示了其实战代码及未来发展方向。
|
9月前
|
调度 数据库 Python
Python异步编程入门:asyncio让并发变得更简单
Python异步编程入门:asyncio让并发变得更简单
462 5
|
调度 Python
探索Python高级并发与网络编程技术。
可以看出,Python的高级并发和网络编程极具挑战,却也饱含乐趣。探索这些技术,你将会发现:它们好比是Python世界的海洋,有穿越风暴的波涛,也有寂静深海的奇妙。开始旅途,探索无尽可能吧!
321 15
|
11月前
|
数据采集 存储 监控
Python爬虫自动化:定时监控快手热门话题
Python爬虫自动化:定时监控快手热门话题
|
监控 算法 安全
基于 Python 广度优先搜索算法的监控局域网电脑研究
随着局域网规模扩大,企业对高效监控计算机的需求增加。广度优先搜索(BFS)算法凭借其层次化遍历特性,在Python中可用于实现局域网内的计算机设备信息收集、网络连接状态监测及安全漏洞扫描,确保网络安全与稳定运行。通过合理选择数据结构与算法,BFS显著提升了监控效能,助力企业实现智能化的网络管理。
267 7
|
9月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1461 102
|
9月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
480 104

推荐镜像

更多