加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

ping网段设备

发布时间:2020-12-17 17:11:11 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #!/usr/bin/env python#coding:utf-8import os,time,random,threadpool,sysfrom progressbar import *COUNT=0tit=1000PINGIP=[]def main():ipd=Noneif

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

#!/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")

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读