pyton 编写脚本检测两台主机之间的通信状态,异常邮件通知

最近客户有一个需求要检测两台服务器之间的通信状态。要是通信是失败就需要邮件通知相关人。本来想用shell来实现,shell脚本ping 对端服务器很简单,但是shell的邮件发送比较麻烦,于是使用python实现并且用smtplib模块可以快速实现邮件的发送。

功能如下:1秒钟ping一次目标地址。代码中把你的邮箱改为自己的就可以,

代码:

#coding:utf-8
import socket
import smtplib
import email.MIMEText
import email.Header
import time
import os

def sendEmail(msg, passwd=‘‘, smtpAddr=‘‘ ):
    if type(msg[‘to‘]) == str:
        tos=[msg[‘to‘]]
    else:
        tos = msg[‘to‘]
    
    m = email.MIMEText.MIMEText(msg[‘content‘])
    m[‘to‘] = ‘,‘.join(tos)
    m[‘From‘] = msg[‘from‘]
    m[‘Subject‘] = email.Header.Header(msg[‘subject‘], msg[‘charset‘])
    m.set_charset(msg[‘charset‘])
   
    s = smtplib.SMTP()  
    socket.setdefaulttimeout(16)
    s.connect(smtpAddr)
    
    try:
        if passwd:
            s.login(msg[‘from‘].split(‘@‘)[0], passwd)
        return s.sendmail(msg[‘from‘], tos, m.as_string() )
    finally:
        s.close()
        
            
        
        
if __name__ == ‘__main__‘:
    
    while True:
        date = time.strftime(‘%Y-%m-%d %H:%M:%S‘) 
        ip="192.168.1.1"
        ping= os.system("ping -c 1 %s" %ip)
        if ping: 
            msg = {
            ‘from‘ : ‘***@***.com‘,
            ‘to‘ : [‘****@163.com‘],
            ‘charset‘ : ‘utf-8‘,
            ‘subject‘ : "Ping %s failed." %ip,  #定义邮件主题 ,
            ‘content‘ : "%s Ping %s failed from 255.252." % (date,ip)
            }
            sendEmail(msg, passwd=‘你的密码‘, smtpAddr=‘你的smtp服务器如:smtp.163.com‘)
            print "Ping %s failed,Have email." % ip 
        else : 
            print "Ping %s successful." % ip 
        print "Sleep 1s..."
        time.sleep(1)

测试的邮件报警:

时间: 2024-11-03 22:52:23

pyton 编写脚本检测两台主机之间的通信状态,异常邮件通知的相关文章

<两台主机之间日志的同步>

首先要知道两台主机之间同步文件udp虽然安全性不高,但是它的同步速率远远高于tcp.这点是不可否认的. 我们以简单的为例: 服务端: 允许别的主机可以把日志同步到自己的主机上来. # vim /etc/rsyslog.conf $ModLoad imudp  //开启udp协议,添加udp模块. $UDPServerRun 514 /etc/init.d/rsyslog restart 重启使配置生效 # tail -f /var/log/messages  //动态监控日志 客户端 把日志往哪

两台主机之间单向Ping不通的问题

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545; min-height: 14.0px } span.s1 { font: 12.0px "Helvetica Ne

Linux两台主机之间建立信任

背景: 有时候我们在两个主机之间复制文件的时候,提示输入密码,很不方便,那如何免密码复制呢?,就是使用通过linux公钥和秘钥,建立双机信任关系. 1. 生成秘钥,并添加信任 我的环境中node1的ip是192.168.168.201,node2的ip是192.168.168.202. [[email protected] ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa #生成rsa [[email protected] ~]# ssh-copy-id

网络中两台主机的通信过程(TCP)

两台主机通信有两种情况:1.在同一网段中 2.不在同一网段中 (1.)在同一网段的通信过程 主机在应用层上的操作: TCP/IP协议上tcp的端口对应的各种应用程序,客户机要访问某个应用程序就会要求打开主机的这个固定的端口.而客户机自己会打开一个大于1024的随机端口用来跟对方的主机进行通信.用户使用应用程序编辑信息,一个单一的会话,实际上就是一个主机应用层之间的逻辑的软件连接. 主机在传输层的操作: 对数据分段(Segment),添加TCP报头(包含源端口,目的端口,顺序号等) 分段的原因:

rsync + inotify 实现两台主机间文件的同步备份

前面一篇博文介绍了rsync的主要使用及工作于服务器模式下的安装.配置.inotify是Linux内核中监控文件系统的一种事件机制,它负责监视文件系统的变化.如文件的创建.修改.删除等,并以事件的方式通知给应用程序.inotify-tools是一个基于内核的inotify机制为用户提供实现对文件系统的事件进行监控功能的应用程序组件. inotify实现的对文件系统监视的事件: IN_ACCESS:文件被访问 IN_MODIFY:文件被修改 IN_ATTRIB,文件属性被修改 IN_CLOSE_W

Winpcap网络编程十之Winpcap实战,两台主机通过中间主机通信

注:本篇博客同样不针对于伸手党,源代码等等的我不会完全公开的,此篇文章写出来为大家的网络编程或者课程设计提供一定的思路.. 好,本次我们需要完成的任务是: 完成两台主机通过中间主机的数据通信(网络层) 增加基于IP地址的转发功能 增加网络层封装 其实最主要的就是基于IP地址的转发功能,网络层的封装其实我们在初级功能中就已经做好了. 首先,实验的思路是A通过中间主机B向C发送数据.那么B则作为一个路由器,B要监听两个网卡,一个网卡发来的数据通过另一个网卡发出去. 示意图如下: A---------

Linux CentOS7 两台机器之间免输入密码相互登录(密钥对认证)

Linux CentOS7 两台机器之间免输入密码相互登录(密钥对认证) 两台机器为: 主机名:fxq-1,IP:192.168.42.181 主机名:fxq-2, IP:192.168.42.182 w命令可以查看当前登录用户的信息 [[email protected] ~]# w  23:59:42 up 12 min,  1 user,  load average: 0.00, 0.07, 0.11USER     TTY      FROM             [email prot

两台centos之间传送文件

最近在CentOS系统中(主机A)读数据.由于A主机只是作为数据读取,具体的Deep Learning 实验,需要在主机B( CentOS )中进行,需要将主机A上的数据传输.由于主机A并不是一直开着CentOS系统,且数据量比较(40G+),所以用优盘copy的方法有点不现实,经过查找资料,发现了两种方法. 注意:两台主机都是CentOS 6.5 版本的系统,主机A:IP 192.168.1.102     主机B:192.168.1.33 1.用命令行的方式 A,B 机上的SSH都允许roo

两台电脑之间怎么用一根网线传输数据

两台电脑之间怎么用一根网线传输数据 此方法在同一个wifi下也行,同一个局域网用wifi传数据 没有网络,两台电脑之间怎么用一根网线传输数据呢? 建议:设置之前,如果联网的话,将ip地址和dns拍下来,等着传输完毕再输入进去. 前提:将两台电脑用一根普通的网线连接 下面以两台电脑都是windows7为例. 如果不是一个系统,请使用飞鸽传书. 工具/原料 两台电脑 一根普通网线 步骤1:设置两台电脑的局域网ip地址 1 为了区分电脑1和2,电脑桌面中,电脑1是蓝色的,电脑2是动态变化的. 设置电脑