多執行緒獲取區域網IP並排序
阿新 • • 發佈:2018-11-08
#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))