X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=yardstick%2Fssh.py;h=8b71fe606dade1c74ca92489e373b1a6aa3be030;hb=4455a0c640fca0284fcf9f8ce41716a79653ddb1;hp=339f834b7530f118a06a1f6bb5417366a520df7f;hpb=ea99867bd2a0618aff12ed977330d69467544dfd;p=yardstick.git diff --git a/yardstick/ssh.py b/yardstick/ssh.py index 339f834b7..8b71fe606 100644 --- a/yardstick/ssh.py +++ b/yardstick/ssh.py @@ -69,6 +69,8 @@ import logging LOG = logging.getLogger(__name__) +DEFAULT_PORT = 22 + class SSHError(Exception): pass @@ -81,7 +83,7 @@ class SSHTimeout(SSHError): class SSH(object): """Represent ssh connection.""" - def __init__(self, user, host, port=22, pkey=None, + def __init__(self, user, host, port=DEFAULT_PORT, pkey=None, key_filename=None, password=None): """Initialize SSH client. @@ -95,7 +97,8 @@ class SSH(object): self.user = user self.host = host - self.port = port + # we may get text port from YAML, convert to int + self.port = int(port) self.pkey = self._get_pkey(pkey) if pkey else None self.password = password self.key_filename = key_filename @@ -121,7 +124,9 @@ class SSH(object): self._client.connect(self.host, username=self.user, port=self.port, pkey=self.pkey, key_filename=self.key_filename, - password=self.password, timeout=1) + password=self.password, + allow_agent=False, look_for_keys=False, + timeout=1) return self._client except Exception as e: message = ("Exception %(exception_type)s was raised " @@ -261,3 +266,8 @@ class SSH(object): with SCPClient(client.get_transport()) as scp: scp.put(files, remote_path, recursive) + + # keep shell running in the background, e.g. screen + def send_command(self, command): + client = self._get_client() + client.exec_command(command, get_pty=True)