【发布时间】:2017-09-12 13:15:03
【问题描述】:
作为一个爱好项目,我正在尝试在互联网上创建一个公共可用路由侦听器网格,为此,我登录到所有这些侦听器并询问他们认识谁以及谁与他们直接连接。效果很好,现在我正在尝试将它们配对。
数学很简单,如果 IP 地址中的最后一个八位字节是偶数,则它的伙伴必须是下一个奇数,反之亦然(有些例外,但我手动执行)
现在如果你在这里运行脚本,你不会得到任何结果,我这样做是为了说明一个我不确定我如何反向解决问题的问题。
运行它,我不会得到任何错误,但如果我在列表中添加另一个元素
['ROUTER5124-A', '100.127.126.16', 'te0/0/24']
我收到此错误:
Traceback (most recent call last):
File "zac.py", line 38, in <module>
linknetsloop.remove(sublist)
ValueError: list.remove(x): x not in list
如果我打印出 linknetsloop.remove(sublist) 和 linknetsloop.remove(items) 它想要删除我添加的额外元素,实际上是两次。这很奇怪,因为它的合作伙伴 .17 甚至都不在那里。我认为错误是我循环遍历列表错误,但搜索几个小时后我找不到我的错误。
#!/usr/bin/python3.5
import re
import ipaddress
linknets = [
['ROUTER1190-A', '100.127.126.81', 'te0/0/2'] ,
['ROUTER1190-A', '100.127.126.83', 'te0/0/3'] ,
['ROUTER1323-A', '100.127.126.125', 'te0/0/24'] ,
['ROUTER1323-A', '100.127.126.97', 'te0/0/25'] ,
['ROUTER1242-B', '100.127.126.173', 'te0/0/25'] ,
['ROUTER1190-B', '100.127.126.55', 'te0/0/24'] ,
['ROUTER1190-B', '100.127.126.57', 'te0/0/25'] ,
['ROUTER1190-C', '100.127.126.171', 'te0/0/24'] ,
['ROUTER1190-C', '100.127.126.59', 'te0/0/25'] ,
['ROUTER5345-A', '100.127.126.25', 'te1/0/12'] ,
['ROUTER5345-A', '100.127.126.47', 'te2/0/12'] ,
['ROUTER1610-A', '100.127.126.69', 'te0/0/24'] ,
['ROUTERP-1242', '100.127.126.85', 'eth1/1/3'] ,
['ROUTERP-1242', '100.127.126.63', 'eth1/1/4'] ,
['ROUTERP-1242', '100.127.126.104', 'eth1/2/1'] ,
]
linknetsloop = linknets
linknets_complete = []
for sublist in linknets:
search = 0
lastoctet = re.match('.*?([0-9]+)$', sublist[1]).group(1)
if int(lastoctet)%2==0: #Last octet is even
search = ipaddress.IPv4Address(sublist[1]) + 1
else:
search = ipaddress.IPv4Address(sublist[1]) - 1
for items in linknets:
if str(search) in items[1]:
print(sublist)
linknetsloop.remove(sublist)
linknetsloop.remove(items)
任何指点将不胜感激
【问题讨论】:
-
请从
linknets发布您想要的输出 -
我希望链接网的输出与我启动脚本时的输出相同,问题是当我添加另一个脚本失败的随机列表时。
-
链接网的输出是什么?
-
这对您来说确实应该是一个简单的调试问题,但是您两次删除了相同的内容。第二次删除它时,它不存在,并且这样说会引发错误。另外,我不知道你为什么将 1 添加到 ipaddress 中,更改它。此外,由于“in”,您将 '100.127.126.17' 与 '100.127.126.173' 和 '100.127.126.171' 匹配
-
应该是这样,
标签: python for-loop multidimensional-array python-3.5