【发布时间】:2017-08-21 09:57:00
【问题描述】:
我的代码写在下面。 运行时它给了我以下错误:
import sys
import numbers
import idlelib
import importlib
(addrString, cidrString) = sys.argv[1].split('/')
addr = addrString.split('.')
cidr = int(cidrString)
mask = [0, 0, 0, 0]
for i in range(cidr):
mask[i/8] = mask[i/8] + (1 << (7 - i % 8))
net = []
for i in range(4):
net.append(int(addr[i]) & mask[i])
broad = list(net)
brange = 32 - cidr
for i in range(brange):
broad[3 - i/8] = broad[3 - i/8] + (1 << (i % 8))
print ("Address: ") , addrString
print ("Netmask: ") , ".".join(map(str, mask))
print ("Network: ") , ".".join(map(str, net))
print ("Broadcast: ") , ".".join(map(str, broad))
得到错误: 回溯(最近一次通话最后): 文件“C:\Users\solut\Desktop\subnet.py”,第 7 行,在 (addrString, cidrString) = sys.argv[2] IndexError: 列表索引超出范围
【问题讨论】:
-
这取决于您传递给 cidrstring 的参数。
-
你希望这行:
(addrString, cidrString) = sys.argv[2]做什么?你向这个程序传递了什么参数? -
好吧!我对此很陌生。如果您可以更新代码或让我知道如何..
-
如果你写的行正好有 2 个字符,那么你的行将采用第二个命令行参数,并将每个字符放入其中一个变量中。我怀疑那是你的意图。
-
从朋友那里得到这个代码。我的目的是创建一个代码,我可以在其中提供 IP 地址,它可以为我计算 CIDR 值
标签: python networking cisco cidr