code: def ip_addr():
      
      log = logging.getLogger(mod_logger + '.ip_addr')
      log.debug('Running the ip addr command...')
      ip_addr_output = {}
  
      command = ['ip', 'addr']
      try:
          ip_addr_result = run_command(command, timeout_sec=20)
      except CommandError:
          _, ex, trace = sys.exc_info()
          msg = 'There was a problem running command: {c}'.format(c=' '.join(command))
          raise CommandError, msg, trace
  
      ip_addr_lines = ip_addr_result['output'].split('\n')
  
      for line in ip_addr_lines:
          line = line.strip()
          if line.startswith('inet6'):
              continue
          elif line.startswith('inet'):
              parts = line.split()
              try:
                  ip_address = parts[1].strip().split('/')[0]
              except KeyError:
                  continue
              else:
                  if not validate_ip_address(ip_address):
                      continue
                  else:
                      for part in parts:
                          part = part.strip()
                          if part.strip().startswith('eth') or part.strip().startswith('eno') or \
                                  part.strip().startswith('ens'):
                              device = part
                              ip_addr_output[device] = ip_address
      return ip_addr_output
docs: Uses the ip addr command to enumerate IP addresses by device
  
      :return: (dict) Containing device: ip_address