LOG = logging.getLogger(__name__)
+DEFAULT_PORT = 22
+
class SSHError(Exception):
pass
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.
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
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 "
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)