python批量生成本地ip地址的方法


Posted in Python onMarch 23, 2015

本文实例讲述了python批量生成本地ip地址的方法。分享给大家供大家参考。具体分析如下:

这段代码用于在本地计算机上生成本地ip地址绑定到网卡,生成的是一个bat的批处理文件,运行此批处理文件,可以通过ipconfig查看

#!/usr/bin/python2.7
# -*- coding: utf-8 -*- 
# Filename: AddIPAliases.py
import re,sys,socket,struct  
# 1. 判断IP地址是否合法; 2. 判断用户输入的IP是否在Class A,Class B 或 Class C中
def CheckIP(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)
  if Checking==None:
    IP=raw_input("亲!请输入合法的IP地址哈: ")
    return CheckIP(IP,IPClassesInt)
  else:
    IPInt=struct.unpack('!L',socket.inet_aton(IP))[0]
    if IPInt not in range(IPClassesInt[0],IPClassesInt[1]+1) and IPInt not in range(IPClassesInt[2],IPClassesInt[3]+1) and IPInt not in range(IPClassesInt[4],IPClassesInt[5]+1):
      IP=raw_input("亲!您输入的IP地址不在Class A,Class B或Class C中,请阅读提示信息并重新输入IP地址:")
      return CheckIP(IP,IPClassesInt)
    else: return IP
# 判断输入的数字是否合法
def CheckIPCount(IPCount):
  regexIPCount=re.compile('\d+')
  Checking=regexIPCount.match(IPCount)
  if Checking==None:
    IPCount=raw_input("亲!请输入合法的数量:")
    return CheckIPCount(IPCount)
  else: return IPCount
# 为用户生成指定数量的IP
def MakeIps(IPInt,IPCount,IPIntBool):
  targetBat=open('AddIPAliases.bat','w+')
  targetCSV=open('AddIPAliases.csv','w+')
  # 判断IP地址的数量是否在Class A,Class B或Class C的范畴中
  if int(IPCount)>(IPClassesInt[IPIntBoolTrue[1][2]]-IPInt+1):
    IPCount=raw_input("亲!您输入的IP数量超过了"+IPIntBoolTrue[0]+"的范畴,请重新输入:")
    return MakeIps(IPInt,IPCount,IPIntBool)
  else:
    for i in range(int(IPCount)):
      IPIntTrans=socket.inet_ntoa(struct.pack("!L", IPInt))
      IPInt+=1
      targetBat.write('netsh interface ip add address "本地连接" '+IPIntTrans+' '+IPIntBoolTrue[1][1]+'\n')
      targetCSV.write(IPIntTrans+'\n')
  targetBat.write('pause')
# Main 函数
print '''
**************************************************
以下信息能够帮助你更好的运行此脚本:
 
1. 在运行脚本前,请移步:控制面板->查看网络->本地连接->属性->IPv4,将自动获取IP改成手动
2. IP分为三类:
  Class A:数量16777216,范围10.0.0.0 - 10.255.255.255
  Class B:数量1048576, 范围172.16.0.0 - 172.31.255.255
  Class C:数量65536,  范围192.168.0.0 ? 192.168.255.255
!!!所以大家在输入IP的时候,请保证您输入的IP属于这三个分类之中!!!
3. 如果你使用的是英文系统,请将自定义函数MakeIPs()中的“本地连接”改成“Local Area Connection”。
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=[]
for i in range(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=IPInt in range(IPClassesInt[0],IPClassesInt[1]+1)
IPIntClassBBool=IPInt in range(IPClassesInt[2],IPClassesInt[3]+1)
IPIntClassCBool=IPInt in range(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=[]
for i in range (len(IPIntBool)):
  if True in IPIntBool.values()[i]:
    IPIntBoolTrue.append(IPIntBool.keys()[i])
    IPIntBoolTrue.append(IPIntBool.values()[i])
    break
# 调用函数为用户生成IP地址
MakeIps(IPInt,IPCount,IPIntBoolTrue)
print "Bat文件生成完毕,请移步至存放的脚本的文件夹找到并运行此文件。"

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python中使用异常处理来判断运行的操作系统平台方法
Jan 22 Python
Python中的rjust()方法使用详解
May 19 Python
python中使用序列的方法
Aug 03 Python
tensorflow输出权重值和偏差的方法
Feb 10 Python
numpy 声明空数组详解
Dec 05 Python
Django多进程滚动日志问题解决方案
Dec 17 Python
Python matplotlib模块及柱状图用法解析
Aug 10 Python
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
Apr 06 Python
python 爬取哔哩哔哩up主信息和投稿视频
Jun 07 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
Jun 13 Python
python之django路由和视图案例教程
Jul 26 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 Python
python通过字典dict判断指定键值是否存在的方法
Mar 21 #Python
python执行外部程序的常用方法小结
Mar 21 #Python
python使用Flask框架获取用户IP地址的方法
Mar 21 #Python
Python使用Flask框架获取当前查询参数的方法
Mar 21 #Python
Python使用Flask框架同时上传多个文件的方法
Mar 21 #Python
python中Flask框架简单入门实例
Mar 21 #Python
python中django框架通过正则搜索页面上email地址的方法
Mar 21 #Python
You might like
Smarty Foreach 使用说明
2010/03/23 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
Symfony查询方法实例小结
2017/06/28 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
Using the TextRange Object
2006/10/14 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
jQuery对象与DOM对象之间的相互转换
2015/03/03 Javascript
JS新包管理工具yarn和npm的对比与使用入门
2016/12/09 Javascript
微信小程序显示下拉列表功能【附源码下载】
2017/12/12 Javascript
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
浅谈在vue-cli3项目中解决动态引入图片img404的问题
2020/08/04 Javascript
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
python的类变量和成员变量用法实例教程
2014/08/25 Python
Python判断Abundant Number的方法
2015/06/15 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
Python制作钉钉加密/解密工具
2016/12/07 Python
Python request设置HTTPS代理代码解析
2018/02/12 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
Python GUI编程完整示例
2019/04/04 Python
详解python函数的闭包问题(内部函数与外部函数详述)
2019/05/17 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
python中rb含义理解
2020/06/18 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
CSS3新属性transition-property transform box-shadow实例学习
2013/06/06 HTML / CSS
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
幼儿园运动会入场词
2014/02/10 职场文书
请假条的格式
2014/04/11 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
民主评议政风行风活动心得体会
2014/10/29 职场文书
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP