使用Python腳本生成隨機(jī)IP的簡單方法
需求
在某應(yīng)用中,需要根據(jù)一定的規(guī)則生成隨機(jī)的IP地址,規(guī)則類似于192.168.11.0/24這樣的CIDR形式給出。
實(shí)現(xiàn)
經(jīng)過艱苦卓絕的調(diào)試,下面的代碼是可以用的:
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)))
生成的結(jié)果如:
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位以上的高位數(shù)據(jù)。由于mask是IPv4的掩碼,所以不需要32位以上的數(shù)據(jù)。這一問題在mask取反之后比較明顯。由于mask是一個(gè)32位以上的數(shù)(有可能是64位),取反之后,高位全部為1,計(jì)算的結(jié)果就不正確了。因此,在使用之前,需要利用(mask & 0xffffffff)清除高位。
供各位讀者參考。
相關(guān)文章
分位數(shù)回歸模型quantile regeression應(yīng)用詳解及示例教程
這篇文章主要為大家介紹了介紹了分位數(shù)回歸quantile regeression的概念詳解及代碼示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11
Python開發(fā)如何在ubuntu 15.10 上配置vim
這篇文章主要介紹了Python開發(fā)如何在ubuntu 15.10 上配置vim 的相關(guān)資料,需要的朋友可以參考下2016-01-01
Python 實(shí)現(xiàn)數(shù)組相減示例
今天小編就為大家分享一篇Python 實(shí)現(xiàn)數(shù)組相減示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Python算法應(yīng)用實(shí)戰(zhàn)之棧詳解
棧是什么,你可以理解為一種先入后出的數(shù)據(jù)結(jié)構(gòu)(First In Last Out),一種操作受限的線性表。下面這篇文章主要給大家介紹了Python中棧的應(yīng)用實(shí)戰(zhàn),文中給出了多個(gè)實(shí)例,需要的朋友可以參考借鑒,下面來一起看看吧。2017-02-02
pandas.loc 選取指定列進(jìn)行操作的實(shí)例
今天小編就為大家分享一篇pandas.loc 選取指定列進(jìn)行操作的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
Python獲取秒級時(shí)間戳與毫秒級時(shí)間戳的示例代碼
這篇文章主要介紹了Python獲取秒級時(shí)間戳與毫秒級時(shí)間戳的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Selenium(Python web測試工具)基本用法詳解
這篇文章主要介紹了Selenium(Python web測試工具)基本用法,結(jié)合實(shí)例形式分析了Selenium的基本安裝、簡單使用方法及相關(guān)操作技巧,需要的朋友可以參考下2018-08-08

