def getNetworkInfo(): ''' Obtains a list of network interfaces @return: A "generator" of elements, that are dict-as-object, with this elements: name: Name of the interface mac: mac of the interface ip: ip of the interface ''' obj = win32com.client.Dispatch("WbemScripting.SWbemLocator") wmobj = obj.ConnectServer("localhost", "root\cimv2") adapters = wmobj.ExecQuery( "Select * from Win32_NetworkAdapterConfiguration where IpEnabled=True") try: for obj in adapters: if obj.DefaultIPGateway is None: # Skip adapters without default router continue for ip in obj.IPAddress: if ':' in ip: # Is IPV6, skip this continue if ip is None or ip == '' or ip.startswith( '169.254') or ip.startswith( '0.'): # If single link ip, or no ip continue logger.debug('Net config found: {}=({}, {})'.format( obj.Caption, obj.MACAddress, ip)) yield utils.Bunch(name=obj.Caption, mac=obj.MACAddress, ip=ip) except Exception: return
def getNetworkInfo(): ''' Obtains a list of network interfaces @return: A "generator" of elements, that are dict-as-object, with this elements: name: Name of the interface mac: mac of the interface ip: ip of the interface ''' for ifname in _getInterfaces(): ip, mac = _getIpAndMac(ifname) if mac != '00:00:00:00:00:00': # Skips local interfaces yield utils.Bunch(name=ifname, mac=mac, ip=ip)