का उपयोग अजगर के ctypes
आप सी पुस्तकालय समारोह getifaddrs
में एक कॉल कर सकते हैं:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from ctypes import *
class Sockaddr(Structure):
_fields_ = [('sa_family', c_ushort), ('sa_data', c_char * 14)]
class Ifa_Ifu(Union):
_fields_ = [('ifu_broadaddr', POINTER(Sockaddr)),
('ifu_dstaddr', POINTER(Sockaddr))]
class Ifaddrs(Structure):
pass
Ifaddrs._fields_ = [('ifa_next', POINTER(Ifaddrs)), ('ifa_name', c_char_p),
('ifa_flags', c_uint), ('ifa_addr', POINTER(Sockaddr)),
('ifa_netmask', POINTER(Sockaddr)), ('ifa_ifu', Ifa_Ifu),
('ifa_data', c_void_p)]
def get_interfaces():
libc = CDLL('libc.so.6')
libc.getifaddrs.restype = c_int
ifaddr_p = pointer(Ifaddrs())
ret = libc.getifaddrs(pointer((ifaddr_p)))
interfaces = set()
head = ifaddr_p
while ifaddr_p:
interfaces.add(ifaddr_p.contents.ifa_name)
ifaddr_p = ifaddr_p.contents.ifa_next
libc.freeifaddrs(head)
return interfaces
if __name__ == "__main__":
print(get_interfaces())
टिप्पणी करते, हालांकि इस विधि पोर्टेबल नहीं है।
खिड़कियों के लिए के बारे में क्या? क्या इस तरह कोई रास्ता है? – JavaNoob
विंडोज़ मेरी मजबूत तरफ नहीं है। शायद 'ipconfig/all' द्वारा प्रदान की गई कुछ जानकारी उपयुक्त है? – Arlaharen
खुले में 'eth0' ('/ proc/net/dev') पढ़ें।) – Sandeep