python 多线程ping_python实现 多线程ping扫描网段中的在线主机
近日因为施工单位进度太慢,导致工期超出预估。领导对此比较重视,让我有空就要看一下完成的进度并汇报。我首先想到的是使用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扫描网段中的在线主机相关推荐
- linux 多线程端口扫描,python 多线程完成linux服务器端口扫描
人性化交互式python脚本,采用多线程方式完成linux服务器开放端口扫描: 以下为完整代码: #!/usr/bin/env python #-*- coding: UTF-8 -*- #func ...
- python paramiko并发_使用Python paramiko模块利用多线程实现ssh并发执行操作
1.paramiko概述 ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography). 有了Paramiko以 ...
- Python 多进程开发与多线程开发
我们先来了解什么是进程? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本:进程 ...
- 一行 Python 实现并行化 -- 日常多线程操作的新思路 - 左手键盘,右手书 - SegmentFault...
一行 Python 实现并行化 -- 日常多线程操作的新思路 - 左手键盘,右手书 - SegmentFault
- python并发编程之多线程理论部分
阅读目录 一 什么是线程 二 线程的创建开销小 三 线程与进程的区别 四 为何要用多线程 五 多线程的应用举例 六 经典的线程模型(了解) 七 POSIX线程(了解) 八 在用户空间实现的线程(了解) ...
- [python学习] 专题八.多线程编程之thread和threading
就个人而言,学了这么多年的课程又写了这么多年的程序,虽然没有涉及到企业级的项目,但还是体会到了有几个知识点是非常重要的,包括:面向对象的思想.如何架构一个项目.设计模式来具体解决问题.应用机器学习和深 ...
- delphi 多个线程 多个进度条_多线程有哪些优点?- Python每日3题(多线程专题)
这里是Python7编程挑战-多线程专题! 每天学习3个问题,包括初级,中级,高级问题各1个. 今天是第2天!一起来呀,就7天! 每日3题是麦叔的面试系列专题之一,每天包括初级,中级,高级难度题目各一 ...
- 关于python的单线程和多线程
单线程 比如两件事,要相继执行,而不是一起执行 '''学习一下单线程和多线程的问题'''from time import ctime,sleep '''单线程''' print('单线程开始:') d ...
- python并发编程之多线程
多线程 线程 1.什么是线程 进程是一个执行空间 , 线程就是其中真正工作的单位 , 每一个进程至少有一个线程(如果我们把操作系统比喻为一个工厂 , 进程就是车间 , 线程就是流水线) 进程包含了运行 ...
最新文章
- 批量管理服务器,批量分发文件
- 计算机培训专业中心架,国家高技能人才培养车工培训方案.doc
- VisualStudioCode下载安装与安装中文插件教程(图文教程)
- Linux之ubuntu的root无法连接FTP
- 如何判断注册用户是否已经存在(membership验证)
- MyBatis框架 多表联合查询实现
- 解析:区块链的本质是伴随信息社会产生的一种新型生产关系
- 关于TagHelper的那些事情——自定义TagHelper(内嵌TagHelper)
- 分布问题(二元,多元变量分布,Beta,Dir)
- sql 获取一个周的周一和周日
- 工程测量(地形图测量)
- 多媒体数据处理实验1:算术编码
- acu风格是什么意思_acu 是什么意思,是一个品牌吗???
- Java并发编程-4-百万流量的短信网关系统
- 史上最全Java学习路线
- 入手评测 华硕灵耀Pro16和联想YOGA 16s哪个好
- excel 设置隔行变色功能
- 我是这样克服拖延症的,你也可以试试
- java输出数据超过5个换行
- 关于解决移动端息屏后定时器不工作的问题
热门文章
- Preface Prologue:《Guns,Germs Steel》
- 笔记本开机黑屏提示:ERROR 0199:System Security-Security password retry count exceeded
- springboot研究九:lettuce连接池很香,撸撸它的源代码
- Caused by: java.lang.IllegalArgumentException: maxActive can‘t not set zero
- python3 爬取汽车之家所有车型操作步骤
- HP LaserJet Pro P1606dn 激光打印机 - 配置 IP 地址
- 签到界面设计:Html+Css+JS
- 备忘录可以统计字数吗?备忘录怎么查看字数
- 监听页面高度变化_Iframe 自适应高度并实时监控高度变化的js代码
- 七夕到了——属于Python的浪漫,拿去吧~ 祝表白成功