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

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

代码:

#coding:utf-8
import socket
import smtplib
import email.MIMEText
import email.Header
import time
import osdef 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)

测试的邮件报警:

转载于:https://blog.51cto.com/slliang/1793604

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

  1. 【网络通信与信息安全】之深入解析两台主机之间的通信过程和原理

    一.前言 本文通过在 Docker 容器中执行命令,来深入了解两台主机之间的通信过程.阅读完本文,您将熟悉以下内容: Docker 的基本操作: 创建 socket 并发送 HTTP 请求: 路由表. ...

  2. Linux两台主机之间建立信任关系

    Linux两台主机之间建立信任关系 一般用ssh命令访问另一台机器,或者用scp命令从别的机器拷贝数据和文件,都要输入对应账户的密码.而在两台机器之间建立信任关系,则可以省略输入密码的过程. 一  : ...

  3. Linux 两台主机之间建立信任关系方式及基本原理

    前言: 去年学过一段时间的现代密码学,最近在配置github, Linux主机之间建立信任关系的时候都用到了其中一些知识,所以刚好整理一下,想直接看操作方式的可直接拉到下面 密码学基本知识 一 现代密 ...

  4. #两台主机之间通信时为什么要用IP地址,而不直接用硬件地址?

    两台主机之间通信时为什么要用IP地址,而不直接用硬件地址?   既然在网络链路上传送的数据帧最终是用硬件地址来寻找目的主机,为什么还要用IP地址进行通信,为什么不直接是用硬件地址进行通信?   首先要 ...

  5. 两个主机之间如何通信

    同一局域网内通信:用ARP来解决 地址解析协议ARP解决这个问题的方法是在主机ARP高速缓存中应存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常更新动态. 每一个主机都设有一个ARP高速缓存 ...

  6. 一些计算两台主机之间进行socket通信的延迟的小程序

    最后更新于2021年6月1日 11:06:11 2021年5月26日 16:44:07:HTTP.TCP和Socket的概念和原理及其区别 iPerf图形化工具Jperf图文使用教程 Measurin ...

  7. linux服务器拷贝目录文件夹,linux两台服务器之间文件/文件夹拷贝

    linux两台服务器之间文件/文件夹拷贝 跨服务器拷贝需要用到的命令是scp. ----------------------拷贝文件夹--------------------------------- ...

  8. 测试两个主机之间的连通性_UCloud 全链路大规模网络连通性检测系统详解

    虚拟网络排查问题困难,传统的 traceroute 等工具很难起到太大作用,大部分情况下都需要到宿主机.混合云网关上抓包来 troubleshooting,耗时又费力.有些场景中包的传送路径比较长(如 ...

  9. 如何使用两台主机实现三个网段之间互通且三个网段均可联网

    版权声明:对于本博客所有原创文章,允许个人.教育和非商业目的使用,但务必保证文章的完整性且不作任何修改地以超链接形式注明原始作者.出处及本声明. 博客地址:http://blog.csdn.net/s ...

  10. 复制密钥文件到另一台服务器,使用所有ssh密钥从第三台服务器在两台服务器之间远程复制...

    我正在用python编写一个部署脚本,但是在我完成它之后,我发现可能不可能实现我的想法.在 情况是这样的.在 我有三个主人.在主机1:Ubuntu 12.04 主机2:SUSE Linux Enter ...

最新文章

  1. java使用jdom生成xml格式文件
  2. Js中的callback机制
  3. 关于flock文件锁的阻塞与非阻塞
  4. MyBatis 缓存详解-一级缓存(本地缓存)介绍
  5. texlive写论文源代码_Texlive 2020 编译胡伟《latex2e完全学习手册》后记字体右倾90度...
  6. c语言解析分隔符文本,c – 使用分隔符读取文件
  7. Maven学习(四)-----Maven中央存储库
  8. php网站渗透实战_【案例分析】记一次综合靶场实战渗透
  9. 关于nginx unit服务非正常关闭后,无法重新启动问题的处理
  10. 亚索全部语音原声mp3_Spring Boot+VUE集成科大讯飞语音在线合成解决方案
  11. 前端学习-jQuery源码学习
  12. C++ 输出Unicode字符的正确方法
  13. Linux下使用zip命令加密压缩/解压文件 zip、unzip、unar
  14. 手机号码11位以及格式验证规则
  15. AD中对PCB的滴泪和敷铜操作
  16. SmartCash会止步于替代葡萄牙及瑞士境内的西联汇款和TransferWise服务吗?
  17. mysql数据库修改密码
  18. 17 -> 详解 openWRT 的 gpio 配置关系说明
  19. Charles抓包出现unknown问题
  20. layui动态表格下拉菜单

热门文章

  1. 高级编程和编程规范总结
  2. c语言中代码中的作用,C语言中#的神奇作用
  3. mysql+1.6安装,CentOS 6.6服务器编译安装lnmp(Nginx1.6.2+MySQL5.6.21+PHP5.6.3
  4. python并发编程方法_一文了解Python并发编程的工程实现方法
  5. 50预训练权重_MMDetection笔记:修改预训练模型权重类别数
  6. php 监听模式,总结Laravel事件系统用法(监听事件,观察者模式)
  7. php怎么跟小程序链接,小程序的链接怎么提取?
  8. 二位数组的示例 go语言
  9. python-gui-pyqt5的使用方法-3--自定义信号的初识
  10. python如何实现手眼定标_手把手教你如何实现Python手势识别与控制(含代码及动图)...