Mo�e jaki� os.open("ipconfig")?
Bo w linux-ie p=os.popen("/sbin/ifconfig") lub f = open("/proc/net/dev")
Zobacz jeszcze tu ->
http://mail.python.org/pipermail/python-win32/2005-September/003746.html
Pozdrawiam
Może tak:
import wmi
c = wmi.WMI()
for _if in c.Win32_NetworkAdapterConfiguration():
print _if.Description
Źródło: http://tgolden.sc.sabren.com/python/wmi/cookbook.html
Moduł: http://tgolden.sc.sabren.com/python/wmi/index.html
Pozdrawiam
import array
import fcntl
import socket
import struct
IOCTL_SIOCGIFCONF = 0x8912
def local_ipaddrs(self, max_if=16):
# max_if to maksymalna liczba interjesów, jaka będzie
# sprawdzana. Można dać coś dużego, jeśli nie boimy
# się zużycia pamięci.
if struct.calcsize('P') == 8:
# 64bit
struct_size = 40
else:
# 32bit
struct_size = 32
data_array_size = max_if * struct_size
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
data_array = array.array('B', [ 0 for i in xrange(data_array_size) ])
data_size = struct.unpack('iL', fcntl.ioctl(sock.fileno(), IOCTL_SIOCGIFCONF, struct.pack('iL', data_array_size, data_array.buffer_info()[0])))[0]
sock.close()
ipaddrs = []
for i in xrange(0, data_size, struct_size):
ipaddrs.append(socket.inet_ntoa(data_array[i + 20:i + 24]))
return ipaddrs
print local_ipaddrs(16)
Pozdrawiam
Beorn
--
Daniel 'Beorn' Mróz <be...@alpha.pl> http://127.0.0.1/beorn
[GIT d s:- a-@ C++++ UL++++$ P+ L++++ E--- W+ N+++ o? K- w---]
[O- M- V! PS+ PE++ Y+ PGP++ t- 5 X R !tv b+ DI D++ G++ e h*]
[ r++ y+ ]
> data_size = struct.unpack('iL', fcntl.ioctl(sock.fileno(), IOCTL_SIOCGIFCONF, struct.pack('iL', data_array_size, data_array.buffer_info()[0])))[0]
fcntl na windzie w taki sposob nie zadziala
najlepiej skorzystac z WMI lub popen('ipconfig /all')