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实现去除下载电影和电视剧文件名中的多余字符的方法
Sep 23 Python
Python实现网站文件的全备份和差异备份
Nov 30 Python
Python Sleep休眠函数使用简单实例
Feb 02 Python
python 常用的基础函数
Jul 10 Python
Python3.0 实现决策树算法的流程
Aug 08 Python
Python Django 简单分页的实现代码解析
Aug 21 Python
python之列表推导式的用法
Nov 29 Python
Python程序控制语句用法实例分析
Jan 14 Python
Python实现密钥密码(加解密)实例详解
Apr 26 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
Sep 16 Python
一篇文章教你用python画动态爱心表白
Nov 22 Python
Python 实现绘制子图及子图刻度的变换等问题
May 31 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
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
JavaScript 字符串连接性能优化
2008/12/20 Javascript
jquery cookie插件代码类
2009/05/26 Javascript
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
vue观察模式浅析
2018/09/25 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
django重新生成数据库中的某张表方法
2019/08/28 Python
基于python读取.mat文件并取出信息
2019/12/16 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
python构造IP报文实例
2020/05/05 Python
Keras在训练期间可视化训练误差和测试误差实例
2020/06/16 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
锐步香港官方网上商店:Reebok香港
2020/11/05 全球购物
美术国培研修感言
2014/02/12 职场文书
团代会主持词
2014/04/02 职场文书
租房协议书怎么写
2014/04/10 职场文书
维修工先进事迹
2014/05/29 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
培训班通知
2015/04/25 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
python爬虫--selenium模块
2021/03/31 Python
Python实现列表拼接和去重的三种方式
2021/07/02 Python