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 client使用http post 到server端的代码
Feb 10 Python
Python生成随机验证码的两种方法
Dec 22 Python
对Python进行数据分析_关于Package的安装问题
May 22 Python
关于Python中空格字符串处理的技巧总结
Aug 10 Python
简单实现python画圆功能
Jan 25 Python
详解python之协程gevent模块
Jun 14 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
python实现简单登陆系统
Oct 18 Python
Python基本socket通信控制操作示例
Jan 30 Python
pytorch numpy list类型之间的相互转换实例
Aug 18 Python
在pycharm中配置Anaconda以及pip源配置详解
Sep 09 Python
Python pandas读取CSV文件的注意事项(适合新手)
Jun 20 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
php中serialize序列化与json性能测试的示例分析
2013/04/27 PHP
PHP上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
初识php MVC
2014/09/10 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
Javascript中的isNaN函数使用说明
2011/11/10 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
jquery cookie的用法总结
2013/11/18 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
python实现两个dict合并与计算操作示例
2019/07/01 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
python开发前景如何
2020/06/11 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
Canvas在超级玛丽游戏中的应用详解
2021/02/06 HTML / CSS
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
医学生个人求职信范文
2013/09/24 职场文书
《一件运动衫》教学反思
2014/02/19 职场文书
会计岗位职责范本
2014/03/07 职场文书
师范生自我鉴定
2014/03/20 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js
Python实现学生管理系统(面向对象版)
2021/06/24 Python
Java实现二分搜索树的示例代码
2022/03/17 Java/Android