| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
WMI Network Informationraspi 17.05.08 08:04 Hakee WMI:n kautta eri verkkokorttien erinäisiä tietoja (koska ipconfigin parsiminen ei ole hyväksi)
# -*- coding: utf-8 -*- # Windows WMI SQL (WQL) # Network information # # http://msdn.microsoft.com/en-us/library/aa394084(VS.85).aspx # http://python.net/crew/mhammond/win32/ # # raspi 2008 import sys try: import win32com.client except ImportError: sys.exit("you can has epic fail") wmi = win32com.client.GetObject("winmgmts:") def getNetworkAdapters(): adapters = [] try: # http://msdn.microsoft.com/en-us/library/aa394216(VS.85).aspx wql = wmi.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE (AdapterTypeID=0 OR AdapterTypeID=9) AND NetConnectionID IS NOT NULL AND Manufacturer <> 'Microsoft'") for i in wql: id = int(i.Properties_["Index"].Value) # Get more adapter information # http://msdn.microsoft.com/en-us/library/aa394217(VS.85).aspx wql2 = wmi.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE Index='%d'" % id) ip = [] dns = [] for j in wql2: # Adapter uses DHCP? dhcp = j.Properties_["DHCPEnabled"].Value # Get DNS servers if j.Properties_["DNSServerSearchOrder"].Value != None: for q in j.Properties_["DNSServerSearchOrder"].Value: dns.append(q.encode(sys.getfilesystemencoding())) # Get IP + Netmask + Gateway if (j.Properties_["IPAddress"].Value != None) and (j.Properties_["IPSubnet"].Value != None): ipcount = len(j.Properties_["IPAddress"].Value) for idx in range(ipcount): try: gw = j.Properties_["DefaultIPGateway"].Value[idx].encode(sys.getfilesystemencoding()) except: gw = "-" ipaddr = j.Properties_["IPAddress"].Value[idx].encode(sys.getfilesystemencoding()) mask = j.Properties_["IPSubnet"].Value[idx].encode(sys.getfilesystemencoding()) ip.append({"IP": ipaddr, "Mask": mask, "Gateway": gw}) # Get rest name = i.Properties_["Name"].Value.encode(sys.getfilesystemencoding()) try: connid = i.Properties_["NetConnectionID"].Value.encode(sys.getfilesystemencoding()) except: connid = "?" try: cstatus = int(i.Properties_["NetConnectionStatus"].Value) avail = int(i.Properties_["Availability"].Value) except: cstatus = 0 avail = 0 try: mac = i.Properties_["MACAddress"].Value.encode(sys.getfilesystemencoding()) except: mac = "" status = [cstatus, avail] adapters.append({"IFName": connid, "Name": name, "Status": status, "IP": ip, "DNS": dns, "MAC": mac, "DHCP": dhcp}) except: print "Unexpected error:", sys.exc_info()[0] return return adapters availability = ['-', 'Other', 'Unknown', 'Running or Full Power', 'Warning', 'In Test', 'Not Applicable', 'Power Off', 'Off Line', 'Off Duty', 'Degraded', 'Not Installed', 'Install Error', 'Power Save - Unknown', 'Power Save - Low Power Mode', 'Power Save - Standby', 'Power Cycle', 'Power Save - Warning'] connstatus = ['Disconnected', 'Connecting', 'Connected', 'Disconnecting', 'Hardware not present', 'Hardware disabled', 'Hardware malfunction', 'Media disconnected', 'Authenticating', 'Authentication succeeded', 'Authentication failed', 'Invalid address', 'Credentials required'] adapters = getNetworkAdapters() #print adapters print "Network adapters:" for i in adapters: if i['IFName'] != "?": print "%s (%s):" % (i['IFName'], i['Name']) print " Status: %s (%s)" % (connstatus[i['Status'][0]], availability[i['Status'][1]]) ipstr = "" for ip in i['IP']: ipstr = "%s/%s (GW: %s) " % (ip['IP'], ip['Mask'], ip['Gateway']) print " IP(s) with mask: " + ipstr print " DNS: " + ", ".join(i['DNS']) print " MAC: " + i['MAC'] print " Use DHCP: " + (i['DHCP'] and "Yes" or "No") print "" # Prints: # # Network adapters: # LAN (NVIDIA nForce Networking Controller): # Status: Connected (Running or Full Power) # IP(s) with mask: 192.168.0.4/255.255.0.0 (GW: -) # DNS: # MAC: 00:1B:FC:53:E3:E0 # Use DHCP: No # # Internet (NVIDIA nForce Networking Controller): # Status: Connected (Running or Full Power) # IP(s) with mask: 1.2.3.4/255.255.255.128 (GW: 1.1.1.1) # DNS: 5.6.7.8, 9.10.11.12 # MAC: 00:3B:FC:61:39:77 # Use DHCP: No # # VMware Network Adapter VMnet1 (VMware Virtual Ethernet Adapter for VMnet1): # Status: Connected (Running or Full Power) # IP(s) with mask: 192.168.68.1/255.255.255.0 (GW: -) # DNS: # MAC: 00:50:56:C0:00:01 # Use DHCP: No # # VMware Network Adapter VMnet8 (VMware Virtual Ethernet Adapter for VMnet8): # Status: Connected (Running or Full Power) # IP(s) with mask: 192.168.209.1/255.255.255.0 (GW: -) # DNS: # MAC: 00:50:56:C0:00:08 # Use DHCP: No |
![]() Haku
|