微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ping网段设备

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

#!/usr/bin/env python
#coding:utf-8
import os,time,random,threadpool,sys
from progressbar import *
COUNT=0
tit=1000
PINGIP=[]
def main():
	ipd=None
	if len(sys.argv)==2:
		ipd=sys.argv[1]

	a=os.popen("ifconfig en0|grep 'inet '|awk '{print $2'}").read()
	s=a.split('.')
	del s[-1]
	ips='.'.join(s)
	ipl=""
	if ipd==None:
		ipl=ips
	else:
		ipl=ipd
	print("搜索网段:"+ipl)
	List=myIpPool(ipl)
	pool=threadpool.ThreadPool(100)
	req=threadpool.makeRequests(ping,List,print_result)
	for r in req:
		pool.putRequest(r)
	pool.wait()
	print()
	print(PINGIP)

def myIpPool(ipPrefix):
	List=[]
	for i in range(1,255):
		List.append("%s.%d" %(ipPrefix,i))
	return List

def print_result(request,result): 
	global COUNT
	global PINGIP
	global pbar
	COUNT+=1
	List=[]
	if result!=None:
		#print "the result is %s %r" % (request.requestID,result) 
		PINGIP.append(result)
	aa=int(COUNT/256.00*100)

	#print(COUNT,aa)
	pbar.update(aa)

def ping(ip):
	#print("ip:"+ip)
	ret=os.popen("ping -c 2 -W 2 "+ip).readlines()
	bak="|".join(ret)
	pp="min/avg/max/stddev" #匹配结果,不同操作系统可能不一样
	'''
	print("长度:"+str(len(ret)))
	print(bak)
	print(bak.find(pp))
	'''
	if(bak.find(pp)!=-1):
		return ip
if __name__=='__main__':
	'''
	
	for i in range(1,1000):
		
		time.sleep(0.01)
	pbar.finish()
	'''
	pbar = ProgressBar().start()
	main()
	#ping("10.10.130.64")

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐