@@ -451,7 +451,8 @@ def check_kvm_source_dir(source_dir):
# The following are functions used for SSH, SCP and Telnet communication with
# guests.
-def remote_login(command, password, prompt, linesep="\n", timeout=10):
+def remote_login(command, password, prompt, linesep="\n", timeout=10,
+ prompt_assist = None):
"""
Log into a remote host (guest) using SSH or Telnet. Run the given command
using kvm_spawn and provide answers to the questions asked. If timeout
@@ -468,7 +469,8 @@ def remote_login(command, password, prompt, linesep="\n", timeout=10):
@param timeout: The maximal time duration (in seconds) to wait for each
step of the login procedure (i.e. the "Are you sure" prompt, the
password prompt, the shell prompt, etc)
-
+ @prarm prompt_assist: An assistant string sent before the pattern
+ matching in order to get the prompt for some kinds of shell_client.
@return Return the kvm_spawn object on success and None on failure.
"""
sub = kvm_subprocess.kvm_shell_session(command,
@@ -479,6 +481,9 @@ def remote_login(command, password, prompt, linesep="\n", timeout=10):
logging.debug("Trying to login with command '%s'" % command)
+ if prompt_assist is not None:
+ sub.sendline(prompt_assist)
+
while True:
(match, text) = sub.read_until_last_line_matches(
[r"[Aa]re you sure", r"[Pp]assword:\s*$", r"^\s*[Ll]ogin:\s*$",