使用Python脚本生成随机IP的简单方法
作者:luqiuwen 发布时间:2023-12-30 06:46:28
标签:Python,IP
需求
在某应用中,需要根据一定的规则生成随机的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)清除高位。
供各位读者参考。


猜你喜欢
- 1. defer的简单介绍与使用场景defer是Go里面的一个关键字,用在方法或函数前面,作为方法或函数的延迟调用。它主要用于以下两个场景:
- Git/GitHub/GitHub Desktop相关概念1、GitGit是一款免费的、开源的、最先进的分布式版本控制系统,可以有效、高速地
- 问题背景用户反馈说当与外部客户端进行 FTP 传输时,可以成功登录,但无法传输任何数据。总之 FTP 传输失败,需要来弄清楚到底发生了什么。
- 如图:其中Num是自增长列,Operation是分类标签,count是汇总数据 脚本如下: select Num=row_number()
- 每次讲解SQL Server里的锁和阻塞(Locking & Blocking)都会碰到的问题:在SQL Server里,为什么我们
- 前言URLconf 就像是 Django 所支撑网站的目录。它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表。你就
- RSA算法RSA算法是一种公钥加密技术,被认为是最安全的加密方式.它是由Rivest,Shamir和Adleman于1978年发明的,因此命
- 这里提供在使用python进行开发中常使用到的方法技巧,如有不对欢迎批评指正。要点:开发中类、变量特性查询,类型就是类,断言的使用,深浅复制
- 如下所示:# -*- coding: utf-8 -*-# 要求:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。def
- 回顾上一篇文章我们介绍了切片slice的定义初始化、引用类型特征、如何使用数组切割成切片。这篇文章介绍切片的生成make()、切片的追加ap
- 前言JS为什么要用ajax来提交在使用from提交时,浏览器会向服务器发送选中的文件的内容而不仅仅是发送文件名。为安全起见,即file-up
- 一、使用xlrd对excel进行数据读取excel表格示例:安装xlrd库pip install xlrd导入xlrd库import xlr
- 目录jiaba库的使用1、jieba库的安装2、统计荷塘月色词频总结jiaba库的使用jieba库是一款优秀的 Python 第三方中文分词
- 原文:https://dev.mysql.com/doc/refman/8.0/en/group-replication-monitorin
- 导语:你不知道Python也能去除“背景”嘛?修饰图片中的头发是设计师最烦人的任务之一!要修得完美,
- 1。formpanel数据源和grid相同,使用 Form.getForm().loadRecord(row);则数据便可自动加载在form
- 在html里的每一个标签都有其自身的意义,而H标签作为标题标签,它的意义更是至关重要。对于H标签的用法特别是h1的用法一直是个争议的问题,也
- 昨日内容:ORM高级查询-filterid=3id__gt=3id__lt=3id__lte=3id__gte=3-in /not in.f
- 最近对爬虫比较感兴趣,所以就学了一下,看人家都在网上爬取那么多美女图片养眼,我也迫不及待的试了一下,不多说,切入正题。其实爬取图片和你下载图
- javascript中要判断一个变量是否为array通常是比较困难的,因为var a = [];alert(t