微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何找到网络ID

如何解决如何找到网络ID

我想使用ipaddress和子网掩码之间的按位运算找到网络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)

解决方法

由于要进行输入,请始终确保对输入内容进行消毒。 使用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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。