Fix enable subprompt (#34723)

* Look for password prompts at the beginning of the line only

* Adds secondary checks for the supplied sub-prompts

Handles the case for enable prompts where enable_pass may be incorrect
and the deivce is still prompting for the password
This commit is contained in:
bdowling 2018-01-24 09:24:22 -05:00 committed by Chris Alfonso
parent 56eeaf1b2f
commit 3b98a2981c
2 changed files with 5 additions and 1 deletions

View file

@ -395,6 +395,10 @@ class Connection(ConnectionBase):
window = self._strip(recv.read())
if prompts and not handled:
handled = self._handle_prompt(window, prompts, answer, newline)
elif prompts and handled:
# check again even when handled, a sub-prompt could be
# repeating (like in the case of a wrong enable password, etc)
self._handle_prompt(window, prompts, answer, newline)
if self._find_prompt(window):
self._last_response = recv.getvalue()

View file

@ -63,7 +63,7 @@ class TerminalModule(TerminalBase):
if passwd:
# Note: python-3.5 cannot combine u"" and r"" together. Thus make
# an r string and use to_text to ensure it's text on both py2 and py3.
cmd[u'prompt'] = to_text(r"[\r\n]?password: $", errors='surrogate_or_strict')
cmd[u'prompt'] = to_text(r"[\r\n]password: $", errors='surrogate_or_strict')
cmd[u'answer'] = passwd
try: