Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python验证网络路由_Python_Python 2.7_Python 3.x - Fatal编程技术网

如何使用Python验证网络路由

如何使用Python验证网络路由,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,有没有一种方法可以用Python验证下面的路由是否有效 10.1.1.1 255.255.255.0 192.168.1.10 用于检查其IP地址是否正确,然后您可以使用模块检查其是否有效,例如: import ipaddress a = ['10.1.1.1', '255.255.255.0', '192.168.1.10', '999.999.999.999', '123.456.789', 'foobar', '123456'] for i in a: tr

有没有一种方法可以用Python验证下面的路由是否有效

10.1.1.1 255.255.255.0 192.168.1.10
用于检查其IP地址是否正确,然后您可以使用模块检查其是否有效,例如:

import ipaddress
a = ['10.1.1.1', '255.255.255.0',
     '192.168.1.10', '999.999.999.999',
     '123.456.789', 'foobar', '123456']

for i in a:
    try:
        print()
        print(i)
        ipaddress.ip_address(i)
    except ValueError:
        print('invalid')
    else:
        print('valid')
输出:

10.1.1.1
valid

255.255.255.0
valid

192.168.1.10
valid

999.999.999.999
invalid

123.456.789
invalid

foobar
invalid

123456
invalid

另外,用于检查IPv4地址,用于检查IPv6地址。例如:

>>> ipaddress.ip_address('127.0.0.1')
IPv4Address('127.0.0.1')

>>> ipaddress.ip_address('2001:0db8:85a3:0000:0000:8a2e:0370:7334')
IPv6Address('2001:db8:85a3::8a2e:370:7334')


>>> ipaddress.IPv4Address('2001:0db8:85a3:0000:0000:8a2e:0370:7334')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/lib/python3.5/ipaddress.py", line 1284, in __init__
    self._ip = self._ip_int_from_string(addr_str)
  File "/usr/lib/python3.5/ipaddress.py", line 1118, in _ip_int_from_string
    raise AddressValueError("Expected 4 octets in %r" % ip_str)
ipaddress.AddressValueError: Expected 4 octets in '2001:0db8:85a3:0000:0000:8a2e:0370:7334'

>>> ipaddress.IPv6Address('2001:0db8:85a3:0000:0000:8a2e:0370:7334')
IPv6Address('2001:db8:85a3::8a2e:370:7334')


>>> ipaddress.IPv6Address('127.0.0.1')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/lib/python3.5/ipaddress.py", line 1909, in __init__
    self._ip = self._ip_int_from_string(addr_str)
  File "/usr/lib/python3.5/ipaddress.py", line 1646, in _ip_int_from_string
    raise AddressValueError(msg)
ipaddress.AddressValueError: At least 3 parts expected in '127.0.0.1'

>>> ipaddress.IPv4Address('127.0.0.1')
IPv4Address('127.0.0.1')
>ipaddress.ip\u地址('127.0.0.1')
IPV4地址('127.0.0.1')
>>>ipaddress.ip_地址('2001:0db8:85a3:0000:0000:8a2e:0370:7334')
IPV6地址('2001:db8:85a3::8a2e:370:7334')
>>>ipaddress.IPv4Address('2001:0db8:85a3:0000:0000:8a2e:0370:7334'))
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib/python3.5/ipaddress.py”,第1284行,在__
self.\u ip=self.\u ip\u int\u from\u string(addr\u str)
文件“/usr/lib/python3.5/ipaddress.py”,第1118行,在\u ip\u int\u from\u字符串中
raise AddressValueError(“应为%r”%ip\u str中的4个八位字节)
ipaddress.AddressValueError:在'2001:0db8:85a3:0000:0000:8a2e:0370:7334'中应为4个八位字节
>>>ipaddress.IPV6地址('2001:0db8:85a3:0000:0000:8a2e:0370:7334'))
IPV6地址('2001:db8:85a3::8a2e:370:7334')
>>>ipaddress.ipv6地址('127.0.0.1')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib/python3.5/ipaddress.py”,第1909行,在__
self.\u ip=self.\u ip\u int\u from\u string(addr\u str)
文件“/usr/lib/python3.5/ipaddress.py”,第1646行,在\u ip\u int\u from\u字符串中
raise AddressValueError(消息)
ipaddress.AddressValueError:在“127.0.0.1”中至少应包含3个部分
>>>ipaddress.IPv4Address('127.0.0.1')
IPV4地址('127.0.0.1')

<>代码>你认为什么是“有效的”?我认为255.255.255.0实际上是一个有效的地址——它是保留范围的一部分。当然,这取决于OP“有效”的确切含义。@interjay:是的,这个问题不太清楚。如果这不是OP要找的,我会编辑或删除它。