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中的面向对象编程详解(下)
Apr 13 Python
使用Python脚本生成随机IP的简单方法
Jul 30 Python
Python引用类型和值类型的区别与使用解析
Oct 17 Python
DataFrame 将某列数据转为数组的方法
Apr 13 Python
Python实现带下标索引的遍历操作示例
May 30 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
Aug 26 Python
python实现机器人卡牌
Oct 06 Python
Python文件读写w+和r+区别解析
Mar 26 Python
python网络编程之五子棋游戏
May 14 Python
python 实用工具状态机transitions
Nov 21 Python
Python安装Bs4的多种方法
Nov 28 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网站提速三大“软”招
2006/10/09 PHP
Ajax PHP分页演示
2007/01/02 PHP
php 移除数组重复元素的一点说明
2008/11/27 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
Yii2框架BootStrap样式的深入理解
2016/11/07 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
Yii框架实现对数据库的CURD操作示例
2019/09/03 PHP
Yii 实现数据加密和解密
2021/03/09 PHP
Jquery Change与bind事件代码
2011/09/29 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
2014/05/11 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
TensorFlow的权值更新方法
2018/06/14 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
Dr.Jart+美国官网:韩国药妆品牌
2019/01/18 全球购物
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
在C语言中"指针和数组等价"到底是什么意思?
2014/03/24 面试题
如何利用find命令查找文件
2015/02/07 面试题
文秘专业自荐信
2013/10/14 职场文书
《风娃娃》教学反思
2014/04/19 职场文书
幼儿园大班毕业评语
2014/12/31 职场文书
2015年医院创卫工作总结
2015/04/22 职场文书
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL