code: def execute_command(self, cmd, timeout, wait_for_string, password):
          
          try:
              self.last_command_result = None
              self.ctrl.send_command(cmd, password=password)
              if wait_for_string is None:
                  wait_for_string = self.prompt_re
  
              # hide cmd in case it's password for further error messages or exceptions.
              if password:
                  cmd = "*** Password ***"
  
              if not self.driver.wait_for_string(wait_for_string, timeout):
                  self.chain.connection.log("Unexpected session disconnect during '{}' command execution".format(cmd))
                  raise ConnectionError("Unexpected session disconnect", host=self.hostname)
  
              if self.last_command_result:
                  output = self.last_command_result.replace('\r', '')
              else:
                  output = self.ctrl.before.replace('\r', '')
  
              # not needed. Fixes the issue #11
              # second_line_index = output.find('\n') + 1
              # output = output[second_line_index:]
              return output
  
          except CommandSyntaxError as e:  # pylint: disable=invalid-name
              self.chain.connection.log("{}: '{}'".format(e.message, cmd))
              e.command = cmd
              # TODO: Verify why lint raises an issue
              raise e  # pylint: disable=raising-bad-type
  
          except (CommandTimeoutError, pexpect.TIMEOUT):
              self.chain.connection.log("Command timeout: '{}'".format(cmd))
              raise CommandTimeoutError(message="Command timeout", host=self.hostname, command=cmd)
  
          except ConnectionError as e:  # pylint: disable=invalid-name
              self.chain.connection.log("{}: '{}'".format(e.message, cmd))
              raise
  
          except pexpect.EOF:
              self.chain.connection.log("Unexpected session disconnect")
              raise ConnectionError("Unexpected session disconnect", host=self.hostname)
  
          except Exception as e:  # pylint: disable=invalid-name
              self.chain.connection.log("Exception {}".format(e))
              raise ConnectionError(message="Unexpected error", host=self.hostname)
docs: Execute command.