ipaddress मॉड्यूल (पायथन 3.3+) IPv4 और IPv6 एड्रेसेस और नेटवर्क्स बनाने, मैनिपुलेट करने और ऑपरेट करने की क्षमता प्रदान करता है।
IPv4 vs IPv6
- IPv4: 32-बिट, डॉटेड-डेसिमल (4 ऑक्टेट्स, 0-255)। उदा:
192.168.1.1। - IPv6: 128-बिट, हेक्साडेसिमल (8 ग्रुप्स, 16-बिट प्रत्येक, कोलन सेपरेटेड)। उदा:
2001:db8:abcd:100::1/64। - CIDR नोटेशन:
192.168.1.1/24(पहले 24 बिट्स नेटवर्क, बाकी होस्ट)।
फैक्टरी फ़ंक्शन्स (स्वचालित वर्जन डिटेक्शन)
ip_address()
import ipaddress
ipaddress.ip_address('192.168.0.1') # IPv4Address('192.168.0.1')
ipaddress.ip_address('2001:ab7::') # IPv6Address('2001:ab7::')
ip_network()
ipaddress.ip_network('192.168.100.0/24') # IPv4Network('192.168.100.0/24')
ipaddress.ip_network('2001:db8:abcd:100::/64') # IPv6Network('2001:db8:abcd:100::/64')
ip_interface()
होस्ट एड्रेस + नेटवर्क का संयोजन।
ipaddress.ip_interface('192.168.100.10/24') # IPv4Interface('192.168.100.10/24')
ipaddress.ip_interface('2001:db8:abcd:100::1/64') # IPv6Interface('2001:db8:abcd:100::1/64')
क्लासेस
IPv4Address
ipaddress.IPv4Address('192.168.0.1') # स्ट्रिंग से
ipaddress.IPv4Address(3162581505) # इंटीजर से
ipaddress.IPv4Address(b'\xC0\xA8\x00\x01') # बाइट्स से (बिग-एंडियन)
IPv6Address
ipaddress.IPv6Address('2001:db8::1000')
ipaddress.IPv6Address('::abc:7:def')
वर्जन प्रॉपर्टी
addr = ipaddress.IPv4Address('192.168.0.1')
print(addr.version) # 4
addr6 = ipaddress.IPv6Address('2001:db8::1000')
print(addr6.version) # 6
नेटवर्क ऑपरेशन्स (IPv4Network/IPv6Network)
net = ipaddress.ip_network('192.168.1.0/24')
print(net.network_address) # 192.168.1.0
print(net.broadcast_address) # 192.168.1.255
print(net.netmask) # 255.255.255.0
print(net.hostmask) # 0.0.0.255
print(net.num_addresses) # 256
# होस्ट्स पर इटरेशन
for ip in net.hosts():
print(ip) # 192.168.1.1, 192.168.1.2, ...
# सबनेट्स
for subnet in net.subnets(prefixlen_diff=1):
print(subnet) # दो /25 सबनेट्स
इंटरफेस ऑपरेशन्स
iface = ipaddress.ip_interface('192.168.1.10/24')
print(iface.ip) # 192.168.1.10
print(iface.network) # 192.168.1.0/24
print(iface.netmask) # 255.255.255.0
तुलना और सदस्यता
net = ipaddress.ip_network('10.0.0.0/8')
print(ipaddress.ip_address('10.1.2.3') in net) # True
print(ipaddress.ip_address('192.168.1.1') in net) # False
उपयोग केस
- नेटवर्क कॉन्फ़िगरेशन वैलिडेशन।
- IP रेंज/सबनेट कैलकुलेशन।
- फायरवॉल नियम प्रोसेसिंग।
- लॉग एनालिसिस में IP पार्सिंग/फिल्टरिंग।