python批量生成本地ip地址的方法
本文实例讲述了python批量生成本地ip地址的方法。分享给大家供大家参考。具体分析如下:
这段代码用于在本地计算机上生成本地ip地址绑定到网卡,生成的是一个bat的批处理文件,运行此批处理文件,可以通过ipconfig查看
#!/usr/bin/python2.7 #-*-coding:utf-8-*- #Filename:AddIPAliases.py importre,sys,socket,struct #1.判断IP地址是否合法;2.判断用户输入的IP是否在ClassA,ClassB或ClassC中 defCheckIP(IP,IPClassesInt): regexIP=re.compile('^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$') Checking=regexIP.match(IP) ifChecking==None: IP=raw_input("亲!请输入合法的IP地址哈:") returnCheckIP(IP,IPClassesInt) else: IPInt=struct.unpack('!L',socket.inet_aton(IP))[0] ifIPIntnotinrange(IPClassesInt[0],IPClassesInt[1]+1)andIPIntnotinrange(IPClassesInt[2],IPClassesInt[3]+1)andIPIntnotinrange(IPClassesInt[4],IPClassesInt[5]+1): IP=raw_input("亲!您输入的IP地址不在ClassA,ClassB或ClassC中,请阅读提示信息并重新输入IP地址:") returnCheckIP(IP,IPClassesInt) else:returnIP #判断输入的数字是否合法 defCheckIPCount(IPCount): regexIPCount=re.compile('\d+') Checking=regexIPCount.match(IPCount) ifChecking==None: IPCount=raw_input("亲!请输入合法的数量:") returnCheckIPCount(IPCount) else:returnIPCount #为用户生成指定数量的IP defMakeIps(IPInt,IPCount,IPIntBool): targetBat=open('AddIPAliases.bat','w+') targetCSV=open('AddIPAliases.csv','w+') #判断IP地址的数量是否在ClassA,ClassB或ClassC的范畴中 ifint(IPCount)>(IPClassesInt[IPIntBoolTrue[1][2]]-IPInt+1): IPCount=raw_input("亲!您输入的IP数量超过了"+IPIntBoolTrue[0]+"的范畴,请重新输入:") returnMakeIps(IPInt,IPCount,IPIntBool) else: foriinrange(int(IPCount)): IPIntTrans=socket.inet_ntoa(struct.pack("!L",IPInt)) IPInt+=1 targetBat.write('netshinterfaceipaddaddress"本地连接"'+IPIntTrans+''+IPIntBoolTrue[1][1]+'\n') targetCSV.write(IPIntTrans+'\n') targetBat.write('pause') #Main函数 print''' ************************************************** 以下信息能够帮助你更好的运行此脚本: 1.在运行脚本前,请移步:控制面板->查看网络->本地连接->属性->IPv4,将自动获取IP改成手动 2.IP分为三类: ClassA:数量16777216,范围10.0.0.0-10.255.255.255 ClassB:数量1048576,范围172.16.0.0-172.31.255.255 ClassC:数量65536,范围192.168.0.0–192.168.255.255 !!!所以大家在输入IP的时候,请保证您输入的IP属于这三个分类之中!!! 3.如果你使用的是英文系统,请将自定义函数MakeIPs()中的“本地连接”改成“LocalAreaConnection”。 4.脚本由于要对长整型的数据进行range(),所以计算时间有点长,请等待成功提示。 5.在脚本存放的目录将会生成一个bat文件和csv文件,bat文件用于向系统中添加IP,生成成功后请手动运行它,csv文件用于在Jmeter中调用这些IP。 6.如果想清除在系统中插入的IP,请移步:控制面板->查看网络->本地连接->属性->IPv4,将手动获取IP改成自动获取IP ************************************************** ''' #将各个Class的起始和结束的IP地址转换成整数 IPClasses=['10.0.0.0','10.255.255.255','172.16.0.0','172.31.255.255','192.168.0.0','192.168.255.255'] IPClassesInt=[] foriinrange(len(IPClasses)): IPClassesInt.append(struct.unpack('!L',socket.inet_aton(IPClasses[i]))[0]) #用户输入 IP=raw_input("请输入起始IP地址:") IPCount=raw_input("请输入生成的IP数量:") #判断输入是否合法 IPAddress=CheckIP(IP,IPClassesInt) IPCount=CheckIPCount(IPCount) IPInt=struct.unpack('!L',socket.inet_aton(IPAddress))[0] IPIntClassABool=IPIntinrange(IPClassesInt[0],IPClassesInt[1]+1) IPIntClassBBool=IPIntinrange(IPClassesInt[2],IPClassesInt[3]+1) IPIntClassCBool=IPIntinrange(IPClassesInt[4],IPClassesInt[5]+1) IPIntBool={"ClassA":[IPIntClassABool,'255.0.0.0',1],"ClassB":[IPIntClassBBool,'255.240.0.0',3],"ClassC":[IPIntClassCBool,'255.255.0.0',5]} IPIntBoolTrue=[] foriinrange(len(IPIntBool)): ifTrueinIPIntBool.values()[i]: IPIntBoolTrue.append(IPIntBool.keys()[i]) IPIntBoolTrue.append(IPIntBool.values()[i]) break #调用函数为用户生成IP地址 MakeIps(IPInt,IPCount,IPIntBoolTrue) print"Bat文件生成完毕,请移步至存放的脚本的文件夹找到并运行此文件。"
希望本文所述对大家的Python程序设计有所帮助。