如何利用python监控主机存活并邮件、短信通知

  • 功能:

1、使用定时任务执行脚本,检查主机存活信息
2、将主机存活信息写入指定文件
3、发现宕机的主机后给用户发邮件提醒
备注:因为139邮箱在接受到邮件后会自动给用户发送条短信告知(且此服务免费),所以间接的实现了短信提醒功能。

  • 代码如下:
# -*- coding: utf-8 -*-
import os
import time
import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 第三方 SMTP 服务
mail_host = "***"  #设置服务器
mail_user="***@***.***"    #用户名
mail_pass="****"   #口令

sender = "****" #发件人信息
receivers = [‘****‘]  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

hostname = [] #在列表中填写需要检测的主机地址或域名
f=open(‘d:/ping.txt‘,‘a+‘)
f.write("-----------------"+"检查开始时间为:"+time.strftime(‘%Y-%m-%d %H:%M:%S‘)+"------------------"+"\n")
f.close()
for ip in hostname:
    response = os.system("ping -n 4 " + ip)
    if response == 0:
        data = ip + " " + ‘is up!‘ + " " +  time.strftime(‘%Y-%m-%d %H:%M:%S‘)
        print data
        f=open(‘d:/ping.txt‘,‘a+‘)
        f.write(data + ‘\n‘)
        f.close()
    else:
        data = ip + " " + ‘is down!‘ + " " + time.strftime(‘%Y-%m-%d %H:%M:%S‘)
        print data
        f=open(‘d:/ping.txt‘,‘a+‘)
        f.write(data + ‘\n‘)
        f.close()
        message = MIMEText(data, ‘plain‘, ‘utf-8‘)
        message[‘From‘] = Header("告警中心", ‘utf-8‘)
        message[‘To‘] =  Header("flanker", ‘utf-8‘)

        subject = ‘【注意】有设备宕机‘
        message[‘Subject‘] = Header(subject, ‘utf-8‘)

        try:
            smtpObj = smtplib.SMTP()
            smtpObj.connect(mail_host,25)    # 25 为 SMTP 端口号
            #smtpObj.starttls()
            smtpObj.login(mail_user,mail_pass)
            smtpObj.sendmail(sender, receivers, message.as_string())
            print "邮件发送成功"
        except smtplib.SMTPException:
            print "Error: 无法发送邮件"

f=open(‘d:/ping.txt‘,‘a+‘)
f.write("-----------------"+"检查结束时间为:"+time.strftime(‘%Y-%m-%d %H:%M:%S‘)+"------------------"+"\n"+"\n")
f.close()
时间: 2024-11-10 14:55:58

如何利用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"         #定义smt

Windows下利用Python动态检测外网IP并发邮件给邮箱

我们知道,运营商给分配的都是动态IP,IP地址过一段时间会自己变化,这就给需要静态地址的应用带来不便,例如搭建服务器或者远程控制电脑,这种情况必须知道自己电脑的IP,利用Python可以方便的自动检测并向邮箱发送邮箱. 但是,个人网络一般都是通过路由器来上网,直接检测电脑的IP并不可行,需要得到外网的IP.内网电脑可以通过端口映射来映射到外网.检测的原理如下: 1.通过自己的电脑信息不太好获取外网IP,幸好有一些雷锋网站可以帮助我们来检测,例如 http://city.ip138.com/ip2

利用python收发邮件功能实现远程电脑的控制

功能并非原创, 只是重复实现了 http://codecloud.net/python-control-128.html 中描述的功能. 实现功能: 通过给固定邮件地址发送命令(包含在主题中)的方式控制远程电脑实现相应功能(譬如关机等, 可以根据实际需要实现更复杂的功能) 实现原理: 远程电脑不断(每隔10s)利用 python 脚本检查邮件服务器是否有新邮件, 如有则对邮件进行分析, 如果包含可执行命令, 则执行相应命令 你需要的: 装有 PYTHON 的 PC; 最好两个邮箱(一个用于接收命

zabbix监控利用Python脚本发邮件

最近实施了zabbix监控,开源软件杠杠的,甩nagios 好几条街-- 环境:centos6.6 + Zabbix 2.4.5 + Python 2.6.6 cd /usr/local/zabbix/share/zabbix/alertscripts #进入脚本存放目录vi SendAlertEmail.sh #编辑,添加以下代码#!/bin/shecho "$3" | mail -s "$2" $1:wq! #保存退出chown zabbix.zabbix /u

python学习笔记[3]-邮件的发送

本文摘抄自:http://www.cnblogs.com/xiaowuyi/archive/2012/03/17/2404015.html 一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍:    1.smtplib模块 smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])   SMTP类构造函数,表示与SMTP服务器之间的连接,通过这个连接可以向smtp服务器发送指令,执行

利用Python+163邮箱授权码发送邮件

背景 前段时间写了个自动打卡的脚本,但是脚本不够完善,我需要知道,打卡到底成没成功,因此,我想到了用Python执行完代码之后,再执行一段发送邮件的代码.需求开始明确了,就开始分析和写代码实现吧. 分析 SMTP(Simple Mail Transfer Protocol),即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. python的smtplib提供了一种很方便的途径发送电子邮件.它对smtp协议进行了简单的封装. 代码实现 import smt

利用python进行数据分析--(阅读笔记一)

以此记录阅读和学习<利用Python进行数据分析>这本书中的觉得重要的点! 第一章:准备工作 1.一组新闻文章可以被处理为一张词频表,这张词频表可以用于情感分析. 2.大多数软件是由两部分代码组成:少量需要占用大部分执行时间的代码,以及大量不经常执行的“粘合剂代码”. cython已经成为python领域中创建编译型扩展以及对接c/c++代码的一大途径. 3.在那些要求延迟性非常小的应用程序中(例如高频交易系统),为了尽最大可能地优化性能,耗费时间使用诸如C++这样更低级.更低生产率的语言进行

利用 Python yield 创建协程将异步编程同步化

在 Lua 和 Python 等脚本语言中,经常提到一个概念: 协程.也经常会有同学对协程的概念及其作用比较疑惑,本文今天就来探讨下协程的前世今生. 首先回答一个大家最关心的问题:协程的好处是什么? 通俗易懂的回答: 让原来要使用 异步 + 回调 方式写的非人类代码,可以用看似同步的方式写出来. 1.回顾同步与异步编程 同步编程即线性化编程,代码按照既定顺序执行,上一条语句执行完才会执行下一条,否则就一直等在那里. 但是许多实际操作都是CPU 密集型任务和 IO 密集型任务,比如网络请求,此时不

利用Python实现归并排序

利用python进行归并排序,摘抄自http://blog.csdn.net/minxihou/article/details/51821052 "代码真的不是一气呵成的,而且也不是想当然写出来的.可能需要反复断点中断来查看是否有逻辑错误.在理解了问题的基础下我们需要先把大体的代码框架最好先写出来,特别是主要的逻辑判断语句.但是不需要太care我循环体或者判断里面语句怎么实现,当你把这一步做到的时候能避免很多不必要的错误发生." 1 import random 2 3 def Conf