作为一个业余爱好项目我试图在互联网上制作一个公共可用路由监听器的网格,为此,我登录到所有人并询问他们他们是谁,他们是谁,直接连接到他们。这工作正常,现在我正在尝试将它们配对。理解循环和多维数组
数学很简单,如果在IP地址的最后八位字节为偶数,它的合作伙伴必须是下一个奇数,反之亦然(有一些例外,但我做的那些手动)
现在,如果你在这里运行脚本,你不会得到任何结果,我这样做的目的是为了说明一个问题,我不知道我如何反向问题解决。
运行这一点,我会得到没有错误,但如果我添加其他元素到列表中
['ROUTER5124-A', '100.127.126.16', 'te0/0/24']
我得到这个错误:如果我打印出来里面有什么linknetsloop.remove
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(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'发布您想要的输出 – Ajax1234
我希望linknets的输出与我启动脚本时的输出相同,问题是当我添加另一个脚本失败的随机列表时。 – BIGFATTOBY
linknets的输出是什么? – Ajax1234