Only allocate a PTY when sudo is used

Postpone the paramiko.Channel.get_pty until we know sudo is used. If
sudo is not used, then we do not need a PTY. In fact, the paramiko docs
explicitly state that it's not desirable to allocate a PTY for a simple
exec_command.

Signed-off-by: martin f. krafft <madduck@madduck.net>
This commit is contained in:
martin f. krafft 2013-02-15 10:15:51 +13:00
parent 584fd7a261
commit 1cf43e9afe

View file

@ -110,7 +110,6 @@ class Connection(object):
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:
@ -120,6 +119,7 @@ class Connection(object):
vvv("EXEC %s" % quoted_command, host=self.host)
chan.exec_command(quoted_command)
else:
chan.get_pty()
shcmd, prompt = utils.make_sudo_cmd(sudo_user, executable, cmd)
vvv("EXEC %s" % shcmd, host=self.host)
sudo_output = ''