需求

在某应用中,需要根据一定的规则生成随机的IP地址,规则类似于192.168.11.0/24这样的CIDR形式给出。

实现

经过艰苦卓绝的调试,下面的代码是可以用的:

RANDOM_IP_POOL=['192.168.10.222/0']

def __get_random_ip():

str_ip = RANDOM_IP_POOL[random.randint(0,len(RANDOM_IP_POOL) - 1)]

str_ip_addr = str_ip.split('/')[0]

str_ip_mask = str_ip.split('/')[1]

ip_addr = struct.unpack('>I',socket.inet_aton(str_ip_addr))[0]

mask = 0x0

for i in range(31, 31 - int(str_ip_mask), -1):

mask = mask | ( 1 << i)

ip_addr_min = ip_addr & (mask & 0xffffffff)

ip_addr_max = ip_addr | (~mask & 0xffffffff)

return socket.inet_ntoa(struct.pack('>I', random.randint(ip_addr_min, ip_addr_max)))

生成的结果如:

192.168.10.175 192.168.10.29

192.168.10.30 192.168.10.207

192.168.10.248 192.168.10.145

192.168.10.168 192.168.10.223

192.168.10.66 192.168.10.138

192.168.10.99 192.168.10.136

192.168.10.147 192.168.10.244

192.168.10.73 192.168.10.180

备注

(mask & 0xffffffff)这一用法,目的在于消除mask上32位以上的高位数据。由于mask是IPv4的掩码,所以不需要32位以上的数据。这一问题在mask取反之后比较明显。由于mask是一个32位以上的数(有可能是64位),取反之后,高位全部为1,计算的结果就不正确了。因此,在使用之前,需要利用(mask & 0xffffffff)清除高位。

供各位读者参考。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

用python随机生成5000个网址_使用Python脚本生成随机IP的简单方法相关推荐

  1. python随机生成二维列表_对python产生随机的二维数组实例详解

    对python产生随机的二维数组实例详解 最近找遍了python的各个函数发现无法直接生成随机的二维数组,其中包括random()相关的各种方法,都没有得到想要的结果.最后在一篇博客中受到启发,通过列 ...

  2. [转载] python 短网址_使用Python生成url短链接的方法

    参考链接: URL 短地址Shorteners及其Python中的API 1 用PHP和Python生成短链接服务的字符串ID 假设你想做一个像微博短链接那样的短链接服务,短链接服务生成的URL都非常 ...

  3. python随机输出52张牌_基于Python制作一副扑克牌过程详解

    整理一下通过本文分享给大家, 该案例是通过 Python 类属性创建一幅除去大王.小王之后的 52 张扑克牌,并实现随机抽牌.排序.洗牌等功能: 创建一个纸牌类 一副扑克除去大王小王之外,剩下的 52 ...

  4. python生成pdf文档_使用Python生成pdf文件

    Python平台的优秀PDF报表类库Reportlab.它不属于Python的标准类库,所以必须手动下载类库包并安装: yum install python-reportlab -y 这篇文章将介绍r ...

  5. python三维数据转换成二维_用Python生成马赛克画

    大家知道马赛克画是什么吗?不是动作片里的马赛克哦~~ 马赛克画是一张由小图拼成的大图,本文的封面就是我们的效果图,放大看细节,每一块都是一张独立的图片,拼在一起组成一张大图,感觉像是用马赛克拼出来的画 ...

  6. python三维随机游走轨迹模拟_用Python模拟随机游走(Random walks)

    什么是随机游走? 随机游走(random walk)也称随机漫步,随机行走等,是以随机的体例采纳连续步调的过程.然后,可以将其他条件应用于此描述,以为您的特定用例建立一个随机遍历.粒子的布朗运动,股票 ...

  7. python制作的炫酷动画_用Python一键生成炫酷九宫格图片,火了朋友圈

    作为一个男同胞来说,为了给女朋友拍一张美美的照片,着实需要花费很大的时间和精力,不仅仅需要从众多的图片中精心挑选,而且还需要有着超强的图片精修能力,才能得到一张张达到女友要求的图片,真心不容易啊- 朋 ...

  8. python 生成excel像素画_用python写一个excel画像素图脚本时所用到的一些库

    首先 ,想法源于在果壳网看到的一个用excel画一幅像素图的活动 思路很简单: 先将一张像素图的每个像素点的rgb值取出来 然后用脚本操作excel,将rgb设置为单元格的背景色 主要就在于两点 一. ...

  9. python处理视频动漫化_用Python实现抖音上的“人像动漫化”特效,原来这么简单...

    原标题:用Python实现抖音上的"人像动漫化"特效,原来这么简单 作者 | 黄伟呢 来源 | 数据分析与统计学之美 前几天,女友拉着我和她玩儿抖音,就是这个 人像动漫化的操作,顿 ...

最新文章

  1. android底部滑出view,Android CoordinatorLayout与NestedScrollView基于Behavior几行代码实现底部View滑入滑出...
  2. bootstrap-翻页-对齐链接
  3. ajax spring mvc 接收json数据,easyui ajax请求获取SpringMVC @ResponseBody返回的Json数据为什么非得eval才能通过对象获取值?...
  4. 【PAT乙级】1024 科学计数法 (20 分)
  5. PPC 调用约定 r0-r31寄存器介绍
  6. Boost:boost::bimaps::vector_of的测试程序
  7. Atitit.rust语言特性 attilax 总结
  8. uint8_t / uint16_t / uint32_t /uint64_t 数据类型大总结
  9. *如何循序渐进向DotNet架构师发展(转)
  10. linux下进程监控6,Linux进程监控技术—精通软件性能测试与LoadRunner最佳实战(6)...
  11. java 对象流传输socket_Java Socket(二)使用TCP传输对象
  12. PAMIE:点击网页中的弹出窗口的按钮
  13. Django在根据models生成数据库表时报 __init__() missing 1 required positional argument 'on_d...
  14. linux内存和flash区别,嵌入式Linux概念NOR/NAND Flash的差别
  15. 计算机网络数据链路层之高速以太网(含使用以太网进行宽带接入)
  16. 数据字典怎么写_做数据分析,我只会同环比,谁能教我怎么写结论?
  17. 轩辕剑【超越XISE菜刀的shell管理工具】
  18. eNSP模拟无线AC和AP
  19. linux内核tcp_hdr,TCP的URG标志和内核实现
  20. php行驶证识别代码,涨姿势:行驶证中车辆识别代码一定要知道的事情!!!

热门文章

  1. OAuth2,JWT,Open-ID Connect和其他令人困惑的事物
  2. 背压加载文件– RxJava常见问题解答
  3. spring 工作流引擎_带Spring的简单工作流引擎
  4. [MEGA DEAL]终极Java捆绑包(95%折扣)
  5. JWT –生成和验证令牌–示例
  6. 十大最常见的Java性能问题
  7. Java EE + MongoDb与Apache TomEE和Jongo Starter项目
  8. 自定义Log4j 2.0
  9. 使用SwingWorker的Java Swing中的多线程
  10. Java 7功能概述