近日因为施工单位进度太慢,导致工期超出预估。领导对此比较重视,让我有空就要看一下完成的进度并汇报。我首先想到的是使用ping命令,但是手工ping了几个,然后就干不下去了(太累了)。这个必须要自动化进行,而我选择使用python来实现。

我写了一个脚本:使用while循环,依次ping网络中的每个节点,并将结果保存到文件中(代码如下)。但是此方法耗时太久!

a=1 #定义a=1

while a<255: #当a<255时 循环执行

b='192.168.1.'+str(a) #b代表ip地址

ret = os.system('ping '+b+' -n 1 ') #每个ip只ping一次

if ret:

os.system('echo '+b+'>>d:\\res2.txt') #如果执行结果不为0, 将ip 放入文件res2.txt

else:

os.system('echo '+b+'>>d:\\res.txt') #否则放入res.txt

a=a+1

为了节约我虽然不能称之为宝贵的时间,我将此段代码进行了改造:

1、采用多线程,先是用了3个线程,最后使用了5个线程

2、不在将结果写入文件,只在标准输出上显示

3、使用linux系统

#!/usr/bin/env python

#coding:utf-8

import os

import time

import threading #引入

class pings(threading.Thread): #定义线程主体部分

def __init__(self,num,interval):

threading.Thread.__init__(self)

self.nums=num #起始数

self.inter=interval #步长

self.thread_stop=False #线程是否停止

self.ns=0 #单线程计数

def run(self):

start=self.nums

while start<254 and not self.thread_stop:

ret=os.system('ping -c 1 -W 1 192.168.1.%d >/dev/null' % start)

if not ret:

print 'ping 192.168.1.%d ok' % start

self.ns +=1

start+=self.inter

print '线程%d结束, ' % self.nums ,

print '此线程共获得 %d 个在线数据' % self.ns

def stop(self):

self.thread_stop=True

def pingt():

thread1=pings(1,5)

thread2=pings(2,5)

thread3=pings(3,5)

thread4=pings(4,5)

thread5=pings(5,5)

thread1.start()

thread2.start()

thread3.start()

thread4.start()

thread5.start()

time.sleep(55)

thread1.stop()

thread2.stop()

thread3.stop()

thread4.stop()

thread5.stop()

if __name__=='__main__':

pingt()

如下是我对公网上的地址段202.102.201.0/24 进行ping测试的结果,总共得到了29个在线的ip地址。

python 多线程ping_python实现 多线程ping扫描网段中的在线主机相关推荐

  1. linux 多线程端口扫描,python 多线程完成linux服务器端口扫描

    人性化交互式python脚本,采用多线程方式完成linux服务器开放端口扫描: 以下为完整代码: #!/usr/bin/env  python #-*- coding: UTF-8 -*- #func ...

  2. python paramiko并发_使用Python paramiko模块利用多线程实现ssh并发执行操作

    1.paramiko概述 ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography). 有了Paramiko以 ...

  3. Python 多进程开发与多线程开发

    我们先来了解什么是进程? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本:进程 ...

  4. 一行 Python 实现并行化 -- 日常多线程操作的新思路 - 左手键盘,右手书 - SegmentFault...

    一行 Python 实现并行化 -- 日常多线程操作的新思路 - 左手键盘,右手书 - SegmentFault

  5. python并发编程之多线程理论部分

    阅读目录 一 什么是线程 二 线程的创建开销小 三 线程与进程的区别 四 为何要用多线程 五 多线程的应用举例 六 经典的线程模型(了解) 七 POSIX线程(了解) 八 在用户空间实现的线程(了解) ...

  6. [python学习] 专题八.多线程编程之thread和threading

    就个人而言,学了这么多年的课程又写了这么多年的程序,虽然没有涉及到企业级的项目,但还是体会到了有几个知识点是非常重要的,包括:面向对象的思想.如何架构一个项目.设计模式来具体解决问题.应用机器学习和深 ...

  7. delphi 多个线程 多个进度条_多线程有哪些优点?- Python每日3题(多线程专题)

    这里是Python7编程挑战-多线程专题! 每天学习3个问题,包括初级,中级,高级问题各1个. 今天是第2天!一起来呀,就7天! 每日3题是麦叔的面试系列专题之一,每天包括初级,中级,高级难度题目各一 ...

  8. 关于python的单线程和多线程

    单线程 比如两件事,要相继执行,而不是一起执行 '''学习一下单线程和多线程的问题'''from time import ctime,sleep '''单线程''' print('单线程开始:') d ...

  9. python并发编程之多线程

    多线程 线程 1.什么是线程 进程是一个执行空间 , 线程就是其中真正工作的单位 , 每一个进程至少有一个线程(如果我们把操作系统比喻为一个工厂 , 进程就是车间 , 线程就是流水线) 进程包含了运行 ...

最新文章

  1. 批量管理服务器,批量分发文件
  2. 计算机培训专业中心架,国家高技能人才培养车工培训方案.doc
  3. VisualStudioCode下载安装与安装中文插件教程(图文教程)
  4. Linux之ubuntu的root无法连接FTP
  5. 如何判断注册用户是否已经存在(membership验证)
  6. MyBatis框架 多表联合查询实现
  7. 解析:区块链的本质是伴随信息社会产生的一种新型生产关系
  8. 关于TagHelper的那些事情——自定义TagHelper(内嵌TagHelper)
  9. 分布问题(二元,多元变量分布,Beta,Dir)
  10. sql 获取一个周的周一和周日
  11. 工程测量(地形图测量)
  12. 多媒体数据处理实验1:算术编码
  13. acu风格是什么意思_acu 是什么意思,是一个品牌吗???
  14. Java并发编程-4-百万流量的短信网关系统
  15. 史上最全Java学习路线
  16. 入手评测 华硕灵耀Pro16和联想YOGA 16s哪个好
  17. excel 设置隔行变色功能
  18. 我是这样克服拖延症的,你也可以试试
  19. java输出数据超过5个换行
  20. 关于解决移动端息屏后定时器不工作的问题

热门文章

  1. Preface Prologue:《Guns,Germs Steel》
  2. 笔记本开机黑屏提示:ERROR 0199:System Security-Security password retry count exceeded
  3. springboot研究九:lettuce连接池很香,撸撸它的源代码
  4. Caused by: java.lang.IllegalArgumentException: maxActive can‘t not set zero
  5. python3 爬取汽车之家所有车型操作步骤
  6. HP LaserJet Pro P1606dn 激光打印机 - 配置 IP 地址
  7. 签到界面设计:Html+Css+JS
  8. 备忘录可以统计字数吗?备忘录怎么查看字数
  9. 监听页面高度变化_Iframe 自适应高度并实时监控高度变化的js代码
  10. 七夕到了——属于Python的浪漫,拿去吧~ 祝表白成功