微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python3.9 将 CIDR 转换为子网:空间导致问题

如何解决Python3.9 将 CIDR 转换为子网:空间导致问题

数据在某些 20x CIDR 中有空格,例如“136.226.68.0/23”与“136.226.68.0/23”,我似乎不知道如何忽略空格。

如果我在 https://ips.zscloud.net/cenr/jsonip 中加载 URL https://codebeautify.org/jsonviewer,您将看到 281 个条目中的 20 个条目的空间。

由于空间原因,此代码在第二个区域为 Atlanta II 136.226.68.0/23 之前可以正常工作:

import requests
import pprint
from ipaddress import IPv4Network

# Site to get data from in json format
url = 'https://ips.zscloud.net/cenr/jsonip'

# Get the data
response = requests.get(url)
data = response.json()

# Separate the data and print city and networks
regions = data['Geo_regions']
for name,region in regions.items():
    for city_name,city_data in region.items():
        for network_data in city_data:
            print (city_name,network_data.get('cidr'))
            net = IPv4Network(network_data.get('cidr'))
            print (net.network_address,net.netmask,'\n')

它得到前 143 个条目就好了,然后得到以下错误

.
.
Atlanta II 104.129.204.0/23 
104.129.204.0 255.255.254.0 

Atlanta II 136.226.68.0/23
Traceback (most recent call last):
  File "/Users/sergiogomez/Downloads/zscaler-Json/get-cidrv4.py",line 18,in <module>
    net = IPv4Network(network_data.get('cidr'))
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ipaddress.py",line 1505,in __init__
    self.netmask,self._prefixlen = self._make_netmask(mask)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ipaddress.py",line 1170,in _make_netmask
    prefixlen = cls._prefix_from_ip_string(arg)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ipaddress.py",line 518,in _prefix_from_ip_string
    cls._report_invalid_netmask(ip_str)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ipaddress.py",line 474,in _report_invalid_netmask
    raise NetmaskValueError(msg) from None
ipaddress.NetmaskValueError: '23 ' is not a valid netmask

注释掉最后两行,它会列出所有281个城市和网络

#net = IPv4Network(network_data.get('cidr'))
#print (net.network_address,'\n')

但需要将CIDR转换为子网

大家有什么建议吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。