Python实现快速多线程ping的方法


Posted in Python onJuly 15, 2015

本文实例讲述了Python实现快速多线程ping的方法。分享给大家供大家参考。具体如下:

#!/usr/bin/python
#_*_coding:utf-8_*_
#
'''
名称:快速多线程ping程序
开发:gyhong gyh9711
日期:20:51 2011-04-25
'''
import pexpect
import datetime
from threading import Thread
host=["192.168.1.1","192.168.1.123","192.168.2.1",
"192.168.1.1","192.168.1.123","192.168.2.1",
"192.168.1.1","192.168.1.123","192.168.2.1",
"192.168.1.1","192.168.1.123","192.168.2.1",
"192.168.1.1"]
report_ok=[]
report_error=[]
class PING(Thread):
  def __init__(self,ip):
    Thread.__init__(self)
    self.ip=ip
  def run(self):
    Curtime = datetime.datetime.now()  
    #Scrtime = Curtime + datetime.timedelta(0,minute,0) 
    #print("[%s]主机[%s]" % (Curtime,self.ip))
    ping=pexpect.spawn("ping -c1 %s" % (self.ip))
    check=ping.expect([pexpect.TIMEOUT,"1 packets transmitted, 1 received, 0% packet loss"],2)
    if check == 0:
      print("[%s] 超时 %s" % (Curtime,self.ip))
    elif check == 1:
      print ("[%s] %s 可达" % (Curtime,self.ip))
    else:
      print("[%s] 主机%s 不可达" % (Curtime,self.ip))
#多线程同时执行
T_thread=[]
for i in host:
  t=PING(i)
  T_thread.append(t)
for i in range(len(T_thread)):
  T_thread[i].start()
#
#print ("\n=========问题主机情况如下==========\n")
#output(report_error)
#print ("\n=========正常主机情况如下==========\n")
#output(report_ok)

执行结果:

administrator@nagios:/win/pexpect$ ./ping.py
[2011-04-25 21:30:22.126981] 192.168.1.1 可达
[2011-04-25 21:30:22.148376] 192.168.1.1 可达
[2011-04-25 21:30:22.179846] 192.168.1.1 可达
[2011-04-25 21:30:22.203691] 192.168.1.1 可达
[2011-04-25 21:30:22.227696] 192.168.2.1 可达
[2011-04-25 21:30:22.134049] 超时 192.168.1.123
[2011-04-25 21:30:22.145610] 超时 192.168.2.1
[2011-04-25 21:30:22.157558] 超时 192.168.1.123
[2011-04-25 21:30:22.167898] 超时 192.168.2.1
[2011-04-25 21:30:22.197572] 超时 192.168.1.123
[2011-04-25 21:30:22.202430] 超时 192.168.2.1
[2011-04-25 21:30:22.215561] 超时 192.168.1.123
[2011-04-25 21:30:22.229952] 超时 192.168.1.1

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python3实现的腾讯微博自动发帖小工具
Nov 11 Python
python实现字典(dict)和字符串(string)的相互转换方法
Mar 01 Python
Python中%r和%s的详解及区别
Mar 16 Python
python数据类型_字符串常用操作(详解)
May 30 Python
Python二叉树定义与遍历方法实例分析
May 25 Python
kaggle+mnist实现手写字体识别
Jul 26 Python
Django中Middleware中的函数详解
Jul 18 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
浅析python中while循环和for循环
Nov 19 Python
python中def是做什么的
Jun 10 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 Python
Django数据库迁移常见使用方法
Nov 12 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
Jul 15 #Python
Python的Django框架中if标签的相关使用
Jul 15 #Python
在Python的Django框架中调用方法和处理无效变量
Jul 15 #Python
python实现判断数组是否包含指定元素的方法
Jul 15 #Python
python获取元素在数组中索引号的方法
Jul 15 #Python
Django框架中方法的访问和查找
Jul 15 #Python
Python的Django框架中的Context使用
Jul 15 #Python
You might like
fetchAll()与mysql_fetch_array()的区别详解
2013/06/05 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
ThinkPHP路由详解
2015/07/27 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
2020/11/22 PHP
jQuery ajax 路由和过滤器使用说明
2011/08/02 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
详解JavaScript时间格式化
2015/12/23 Javascript
jQuery组件easyui基本布局实现代码
2016/08/25 Javascript
vue基于Vue2.0和高德地图的地图组件实例
2017/04/28 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
详解js中Array的方法及技巧
2018/09/12 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
python使用tensorflow保存、加载和使用模型的方法
2018/01/31 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
使用python批量转换文件编码为UTF-8的实现
2020/04/03 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
毕业生的求职信范文分享
2013/12/04 职场文书
班级团队活动方案
2014/08/14 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
2014年招生工作总结
2014/11/26 职场文书
催款律师函范文
2015/05/27 职场文书
一条 SQL 语句执行过程
2022/03/17 MySQL
Java线程的6种状态与生命周期
2022/05/11 Java/Android
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript