Maison >développement back-end >Tutoriel Python >Utilisez Python pour écrire un script qui compte que le réseau local ne s'arrête pas et génère un tableau Excel (exemple de code)
Cet article présente l'utilisation de Python pour écrire un script qui compte que le réseau local ne s'arrête pas et génère un tableau Excel (exemple de code)
#!/udict/bin/env python # -*- coding: utf_8 -*- #Date:2016/10/17 #Author:wangpeng #blog:http://wangpengtai.blog.51cto.com import subprocess import nmap import time,datetime import xlrd,xlsxwriter,xlwt import os,sys from xlutils.copy import copy from multiprocessing import Pool def ip_scan(ip): global nm p = subprocess.Popen("ping -c 1 -t 1 "+ip,stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell = True) output = p.stdout.read() #print output #the local time dtime = time.strftime("%Y/%m/%d %X",time.localtime()) nm = nmap.PortScanner() if "100% packet loss" not in output: nm.scan(ip,arguments='-O -sS -sU -F') try: dict = {'status':'up','IP':ip,'OS':str(nm[ip]['osmatch'][0]['name']),'Mac':str(nm[ip]['vendor'].keys()[0]),'Hostname':str(nm[ip]['hostnames'][0]['name']),'Datetime':dtime} #print dict #addResult(dict,filename,table) #print 'IP:%s,dict:%s' %(ip,dict) except: try: dict = {'status':'up','IP':ip,'OS':str(nm[ip]['osmatch'][0]['name']),'Mac':'','Hostname':str(nm[ip]['hostnames'][0]['name']),'Datetime':dtime} except: dict = {'status':'up','IP':ip,'OS':'','Mac':str(nm[ip]['addresses']['mac']),'Hostname':str(nm[ip]['hostnames'][0]['name']),'Datetime':dtime} print ip #print "####error!####" #print dict #pass addResult(dict,filename,table) else: print 'ip:%s--->down!' %ip dict = {'status':'down','IP':ip,'OS':'','Mac':'','Hostname':'','Datetime':dtime} addResult(dict,filename,table) def count_rows(filename): data = xlrd.open_workbook(filename) table = data.sheets()[0] nrows = table.nrows return nrows #create a excel table def addResult(dict,filename,table): #pick up the key from dict and make it title to excel title = dict.keys() #sort the key title.sort() clo_num = len(dict.keys()) styleBoldRed = xlwt.easyxf('font: color-index red, bold on') headerStyle = styleBoldRed if not os.path.exists(filename): wb = xlwt.Workbook() ws = wb.add_sheet('count') for i in range(clo_num): ws.write(0,i,title[i],headerStyle) ws.write(1,i,dict[title[i]]) wb.save(table) else: oldWb = xlrd.open_workbook(table,formatting_info = True) newWb = copy(oldWb) newWs = newWb.get_sheet(0) num = count_rows(filename) for i in range(clo_num): newWs.write(num,i,dict[title[i]]) newWb.save(table) def start(): global filename global table t_date = datetime.date.today().strftime("%Y_%m_%d") t_name = 'report_%s.xls' %(t_date) filename = r'/home/python/%s' %(t_name) ip_list = [] for i in range(1,255): ip_list.append('172.20.113.'+str(i)) #print ip_list print("please wait...") #计算时间 time_start=time.time() #创建线程 for ip in ip_list: # pid = os.fork() # if not pid: ip_scan(ip) #sys.exit() time_end=time.time() t=time_end-time_start print '*'*48 print '\nTime:'+str(t)+'s' print 'Scan results have been saved to test.\n' print '*'*48 if __name__ == '__main__': """ filename = r'/home/wangpeng/python/test1.xls' table = 'test1.xls' ip_list = ['172.20.113.57','172.20.113.47','172.20.113.10'] for ip in ip_list: ip_scan(ip) """ start()
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!