#coding = utf-8
import os,os.path
import threading
import re
from time import ctime, sleep
lock = threading.RLock()
iplist = []
def action(ip):
return1 = os.system('ping -n 2 -w 1 %s' % ip) # 每个ip ping2次,等待时间为1s
#线程加锁
lock.acquire()
if not return1:
iplist.append(ip)
lock.release()
return return1
#多线程代码
def pingfuncthread():
print('start at', ctime())
thread_list = []
for j in range(31,32):
for i in range(1,255):
ip = "192.168.%d.%d" %(j,i)
t = threading.Thread(target=action,args = (ip,))
#t.setDaemon(True)
thread_list.append(t)
for t in thread_list:
t.start()
for t in thread_list:
t.join()
print('DONE AT:', ctime())
#单线程代码
def pingfunc():
for i in range(1,255):
ip = "192.168.31.%d" %(i)
action(ip)
if __name__ == '__main__':
pingfuncthread()
#对获取的ip列表排序
new_iplist = sorted(iplist,key = lambda x: (int(x.split('.')[0]),int(x.split('.')[1]),int(x.split('.')[2]),int(x.split('.')[3])))
#写出ip列表
result = "ip.txt"
with open(result, 'w') as f:
for ip in new_iplist:
f.write("%s\n" % (ip))
多线程获取局域网IP并排序
猜你喜欢
转载自blog.csdn.net/kingskynine/article/details/83177781
今日推荐
周排行