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

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

(0)

相关推荐

  • python通过scapy获取局域网所有主机mac地址示例

    python通过scapy获取局域网所有主机mac地址 复制代码 代码如下: #!/usr/bin/env python# -*- coding: utf-8 -*-from scapy.all import srp,Ether,ARP,confipscan='192.168.1.1/24'try:    ans,unans = srp(Ether(dst="FF:FF:FF:FF:FF:FF")/ARP(pdst=ipscan),timeout=2,verbose=False)exc

  • 使用python检测主机存活端口及检查存活主机

    监测主机存活的端口 #!/usr/bin/env python # coding-utf import argparse import socket import sys #author: wolf_ribble def scan_ports(host,start_port,end_port): """Scan remote hosts""" try: sock = socket.socket(socket.AF_INET, socket.SOC

  • Python获取Windows或Linux主机名称通用函数分享

    通过python的os模块获取windows或者linux主机名的通用函数. 复制代码 代码如下: #!/usr/bin/env python  #coding=utf-8    import os    def hostname():          sys = os.name            if sys == 'nt':                  hostname = os.getenv('computername')                  return hos

  • python实现根据主机名字获得所有ip地址的方法

    本文实例讲述了python实现根据主机名字获得所有ip地址的方法.分享给大家供大家参考.具体实现方法如下: # -*- coding: utf-8 -*- import sys, socket result = socket.getaddrinfo('www.google.com', None, 0, socket.SOCK_STREAM) counter = 0 for item in result: print "%-2d: %s" % (counter, item[4]) cou

  • python实现根据ip地址反向查找主机名称的方法

    本文实例讲述了python实现根据ip地址反向查找主机名称的方法.分享给大家供大家参考.具体如下: import sys, socket try: result = socket.gethostbyaddr("66.249.71.15") print "Primary hostname:" print " " + result[0] # Display the list of available addresses #that is also r

  • 利用python批量给云主机配置安全组的方法教程

    前言 这几年对运维人员来说最大的变化可能就是公有云的出现了,我相信可能很多小伙伴公司业务就跑在公有云上,  因为公司业务关系,我个人接触公有云非常的早,大概在12年左右就是开始使用亚马逊云,后来逐渐接触到国内的阿里,腾讯云等,随着公司业务往国内发展,这几年我们也使用了很多国内的公有云厂商,所以在云运维方面也积累了一些经验,从传统的物理机到公有云运维,我个人认为最大的问题就是你能不能用公有云的思路去思考去实现一个安全稳定.可伸缩和经济的业务构架,云运维是有别与传统运维的,比如说了解公有云的都知道安

  • 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服务器 mai

  • python 检测nginx服务邮件报警的脚本

    $ cat checkserver.py #!/usr/bin/python # -*- coding: utf-8 -*-   import os import socket import smtplib from email.mime.text import MIMEText from email.header import Header   mail_host = "smtp.exmail.qq.com" mail_user = "yunwei-monitor@111.

  • 用python监控服务器的cpu,磁盘空间,内存,超过邮件报警

    监控Linux服务器嘛,脚本逻辑基本上是用os.popen模块,然后把获取到的结果通过split切分成一个list,再拿目标list值和我阈值对比,超过就邮件报警: 邮件是通过Linux的mailx发出去的,可自行搜索安装该模块,关键字:"Linux使用mailx发邮件",脚本如下: 一.cpu ideal值,不小于20% #!/usr/bin/python # -*- coding: utf-8 -*-   import datetime import os     f = os.p

  • python监控日志中的报错并进行邮件报警

    目录 前言 实现思路 实现代码 前言 在测试过程中,注意力往往都在功能上,如果功能正常,是基本不会查看日志的,反之会查看日志定位问题.但是表面上的功能正常不能确保日志没有报错,不能确保其他功能点没有问题,这时我们就需要日志的监控,一旦有报错就触发报警机制(报警机制可以有邮件报警.钉钉微信发消息报警等),我选择的是发邮件报警. 实现思路 1.在测试过程中,日志时时在刷,时时监控难度太大 2.转换思路,每分钟对日志进行扫描一次,发现报错即报警 a.获取当前时间前一分钟的日志,并将日志全部写入一个文件

  • Zabbix邮件报警设置方法

    说明: Zabbix监控服务端.客户端都已经部署完成,被监控主机已经添加,Zabiix监控运行正常. 实现目的: 在Zabbix服务端设置邮件报警,当被监控主机宕机或者达到触发器预设值时,会自动发送报警邮件到指定邮箱. 具体操作: 以下操作在Zabbix监控服务端进行 备注:Zabbix监控服务端 操作系统:CentOS 主机名:zabbix.osyunwei.com 邮件报警有两种情况: 1.Zabbix服务端只是单纯的发送报警邮件到指定邮箱,发送报警邮件的这个邮箱账号是Zabbix服务端的本

  • Zabbix3.0邮件报警配置

    我们搭建好Zabbix服务器创建了监控项和触发器之后,如何使用邮箱达到报警功能?本文使用mail作为邮件发送工具. 下面将介绍,如何安装和配置邮箱. 话不多说,就是干!我们分两步,第一步安装mail邮件发送工具,第二步配置Zabbix服务器发送报警邮件 一.mail安装和设置 安装邮件支持功能 yum install postfix systemctl start postfix systemctl enable postfix 验证:ss -lntp 安装发邮件工具mail yum -y in

  • python获取外网IP并发邮件的实现方法

    第一步:通过ip138来爬取外网ip 第二步:通过python的smtplib模块和email来发送邮件,具体用法去网上搜索, 下面是代码示例: #!/usr/bin/env python #coding:utf-8 import urllib2 import re import smtplib from email.MIMEText import MIMEText from email.Header import Header #################################

  • Python实现读取邮箱中的邮件功能示例【含文本及附件】

    本文实例讲述了Python实现读取邮箱中的邮件功能.分享给大家供大家参考,具体如下: #-*- encoding: utf-8 -*- import sys import locale import poplib from email import parser import email import string # 确定运行环境的encoding __g_codeset = sys.getdefaultencoding() if "ascii"==__g_codeset: __g_

  • Python编程实现及时获取新邮件的方法示例

    本文实例讲述了Python编程实现及时获取新邮件的方法.分享给大家供大家参考,具体如下: #-*- encoding: utf-8 -*- import sys import locale import poplib from email import parser import email import string import mysql.connector import traceback import datetime from mysql.connector import error

  • 使用Grafana 展示Docker容器的监控图表并设置邮件报警规则(图解)

    一.Docker 容器监控报警方式 接着上篇文章的记录,看到grafana的版本已经更新到4.2了,并且在4.0以后的版本中,加入了Alert Notifications 功能,这样在对容器 监控完,可以加入报警规则.根据官网介绍,报警方式也有很多种,常见的Email.Slack即时通讯.webhook等. 本篇记录的是邮件的报警设置.环境和上篇基本一致,都是在Docker 平台测试环境下,另外本篇使用的grafana容器的版本是用的 dockerhub上最新版本,该版本为grafana/gra

随机推荐