netaddr網絡地址工具python


print("==========1==========")
from netaddr import IPNetwork

# IPNetwork('192.168.7.80/30'), IPNetwork('192.168.7.84/30'), IPNetwork('192.168.7.88/30'), IPNetwork('192.168.7.92/30')
ip_str = "192.168.7.83/28"
# ip_str="192.168.7.92/30"
# ip_str = "192.168.1.130/32"
# ip_str = "192.168.34.92/255.255.255.248"
print(ip_str)
ip = IPNetwork(ip_str)
print(ip)

# 子網掩碼
print(ip.netmask)
# 廣播地址
print(ip.broadcast)
# 網絡地址
print(ip.network)
# 取反掩碼
print(ip.hostmask)
# 同一網段ip總數
print(ip.size)
# 修改地址的掩碼長度為28
ip.prefixlen = 28
print(ip)

# 將同一網段的ip,再化為掩碼長度為30的幾個子網段
new_ips_list = [x for x in ip.subnet(30)]
print(new_ips_list)

# # 獲取某一網段的所有主機地址
for ip in IPNetwork(ip_str).iter_hosts():
    print(ip)

print("==========2==========")
# IPAddress的用法
from netaddr import IPAddress

# 判斷地址的公網、私網屬性
print(IPAddress("100.64.0.1").is_private())
print(IPAddress("114.114.114.114").is_private())

print("==========3==========")
# 定義任意一段IP地址的范圍
from netaddr import IPRange

ip_range = IPRange("192.168.1.10", "192.168.1.130")
# 對這一段ip地址進行地址聚合
print(ip_range.cidrs())

print("==========4==========")
# 多個分散ip再聚合
from netaddr import cidr_merge

ip_list = []
ip_list.append(IPNetwork("192.168.1.0/25"))
ip_list.append(IPNetwork("192.168.1.128/25"))
ip_list.append(IPNetwork("192.168.0.0/24"))
ip_list.append(IPNetwork("192.168.3.0/26"))
ip_list.append(IPNetwork("192.168.3.64/26"))
print(cidr_merge(ip_list))

print("==========5==========")
# 處理MAC地址
from netaddr import EUI, mac_unix, mac_cisco, mac_bare

# mac = EUI("98:5a:eb:9f:35:f8")
mac = EUI("98-5A-EB-9F-35-F8")
print(mac)

# mac顯示風格1
mac.dialect = mac_unix
print(mac)
# mac顯示風格2
mac.dialect = mac_cisco
print(mac)
# mac顯示風格3
mac.dialect = mac_bare
print(mac)

# mac地址廠家信息
print(mac.info)

 輸出:

print("==========1==========")
from netaddr import IPNetwork

# IPNetwork('192.168.7.80/30'), IPNetwork('192.168.7.84/30'), IPNetwork('192.168.7.88/30'), IPNetwork('192.168.7.92/30')
ip_str = "192.168.7.83/28"
# ip_str="192.168.7.92/30"
# ip_str = "192.168.1.130/32"
# ip_str = "192.168.34.92/255.255.255.248"
print(ip_str)
ip = IPNetwork(ip_str)
print(ip)

# 子網掩碼
print(ip.netmask)
# 廣播地址
print(ip.broadcast)
# 網絡地址
print(ip.network)
# 取反掩碼
print(ip.hostmask)
# 同一網段ip總數
print(ip.size)
# 修改地址的掩碼長度為28
ip.prefixlen = 28
print(ip)

# 將同一網段的ip,再化為掩碼長度為30的幾個子網段
new_ips_list = [x for x in ip.subnet(30)]
print(new_ips_list)

# # 獲取某一網段的所有主機地址
for ip in IPNetwork(ip_str).iter_hosts():
    print(ip)

print("==========2==========")
# IPAddress的用法
from netaddr import IPAddress

# 判斷地址的公網、私網屬性
print(IPAddress("100.64.0.1").is_private())
print(IPAddress("114.114.114.114").is_private())

print("==========3==========")
# 定義任意一段IP地址的范圍
from netaddr import IPRange

ip_range = IPRange("192.168.1.10", "192.168.1.130")
# 對這一段ip地址進行地址聚合
print(ip_range.cidrs())

print("==========4==========")
# 多個分散ip再聚合
from netaddr import cidr_merge

ip_list = []
ip_list.append(IPNetwork("192.168.1.0/25"))
ip_list.append(IPNetwork("192.168.1.128/25"))
ip_list.append(IPNetwork("192.168.0.0/24"))
ip_list.append(IPNetwork("192.168.3.0/26"))
ip_list.append(IPNetwork("192.168.3.64/26"))
print(cidr_merge(ip_list))

print("==========5==========")
# 處理MAC地址
from netaddr import EUI, mac_unix, mac_cisco, mac_bare

# mac = EUI("98:5a:eb:9f:35:f8")
mac = EUI("98-5A-EB-9F-35-F8")
print(mac)

# mac顯示風格1
mac.dialect = mac_unix
print(mac)
# mac顯示風格2
mac.dialect = mac_cisco
print(mac)
# mac顯示風格3
mac.dialect = mac_bare
print(mac)

# mac地址廠家信息
print(mac.info)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM