如何解决如何找到网络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 举报,一经查实,本站将立刻删除。