code: def _control_vm(self, command, expected=None):
          
  
          result = None
          if self.is_running() and self._monitor:
              log.debug("Execute QEMU monitor command: {}".format(command))
              try:
                  log.info("Connecting to Qemu monitor on {}:{}".format(self._monitor_host, self._monitor))
                  reader, writer = yield from asyncio.open_connection(self._monitor_host, self._monitor)
              except OSError as e:
                  log.warn("Could not connect to QEMU monitor: {}".format(e))
                  return result
              try:
                  writer.write(command.encode('ascii') + b"\n")
              except OSError as e:
                  log.warn("Could not write to QEMU monitor: {}".format(e))
                  writer.close()
                  return result
              if expected:
                  try:
                      while result is None:
                          line = yield from reader.readline()
                          if not line:
                              break
                          for expect in expected:
                              if expect in line:
                                  result = line.decode("utf-8").strip()
                                  break
                  except EOFError as e:
                      log.warn("Could not read from QEMU monitor: {}".format(e))
              writer.close()
          return result
docs: Executes a command with QEMU monitor when this VM is running.
  
          :param command: QEMU monitor command (e.g. info status, stop etc.)
          :param expected: An array of expected strings
  
          :returns: result of the command (matched object or None)