docs: def exec_command(self, cmd, tmp_path, sudo_user, sudoable=False, executable='/bin/sh'):
          ''' run a command on the remote host '''
  
          bufsize = 4096
          try:
              chan = self.ssh.get_transport().open_session()
          except Exception, e:
              msg = "Failed to open session"
              if len(str(e)) > 0:
                  msg += ": %s" % str(e)
              raise errors.AnsibleConnectionFailed(msg)
          chan.get_pty()
  
          if not self.runner.sudo or not sudoable:
              if executable:
                  quoted_command = executable + ' -c ' + pipes.quote(cmd)
              else:
                  quoted_command = cmd
              vvv("EXEC %s" % quoted_command, host=self.host)
              chan.exec_command(quoted_command)
          else:
              shcmd, prompt = utils.make_sudo_cmd(sudo_user, executable, cmd)
              vvv("EXEC %s" % shcmd, host=self.host)
              sudo_output = ''
              try:
                  chan.exec_command(shcmd)
                  if self.runner.sudo_pass:
                      while not sudo_output.endswith(prompt):
                          chunk = chan.recv(bufsize)
                          if not chunk:
                              if 'unknown user' in sudo_output:
                                  raise errors.AnsibleError(
                                      'user %s does not exist' % sudo_user)
                              else:
                                  raise errors.AnsibleError('ssh connection ' +
                                      'closed waiting for password prompt')
                          sudo_output += chunk
                      chan.sendall(self.runner.sudo_pass + '\n')
              except socket.timeout:
                  raise errors.AnsibleError('ssh timed out waiting for sudo.\n' + sudo_output)
  
          stdout = ''.join(chan.makefile('rb', bufsize))
          stderr = ''.join(chan.makefile_stderr('rb', bufsize))
          return (chan.recv_exit_status(), '', stdout, stderr)