如何查找网络ID

2024-05-08 03:39:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在python中使用ipaddress和subnetmask之间的按位操作查找网络id。我想使用这个传统方法,我的示例代码在这里

hostname=input("Enter the IP Address: ")
print(hostname)
if hostname >= "0.0.0.0" and hostname <= "127.255.255.255":
    print("Class A")
    print("The default subnet mask is: 255.0.0.0")
    j=(hostname & 255.0.0.0)
    print("The network id is ",j)

Tags: the方法代码网络id示例inputis
1条回答
网友
1楼 · 发布于 2024-05-08 03:39:54

由于您正在接受输入,请始终确保对输入进行清理。 首先使用ipaddress.ip_interface()ipaddress.ip_network()确保给定的输入是有效的IP

另外,您的输入hostname是一个字符串,因此按位操作将失败

一旦使用ipaddresss.ip_address(hostname),您将得到一个IPv4Address对象,它将允许您检查许多属性

ipaddress标准包中还有其他辅助函数,用于获取CIDR值和创建IPvXNetwork对象,也许这就是您要查找的,请检查ipaddress HOW-TO

大致如下:

import ipaddress

try:
    inp = input("Enter the IP Address: ")
    iface = ipaddress.ip_interface(inp)
except ValueError as e:
    # crude way of handling and printing errors
    # there are elegant ways to handle and proceed
    print(e)
    exit(1)
else:
    netword_id = iface.network
    hostname = iface.ip

注意:我对原始答案做了一些编辑,您可能想使用ipaddress.ip_interface()

相关问题 更多 >