def get_remote(self, ip, port=22): """ Function returns remote SSH connection to node by ip address :param ip: IP of host :param port: port for SSH :return: SSHClient """ if (ip, port) not in self.connections: logger.debug('SSH_MANAGER:Create new connection for ' '{ip}:{port}'.format(ip=ip, port=port)) keys = self._get_keys() if ip != self.admin_ip else [] if ip == self.admin_ip: username = self.admin_login password = self.__admin_password else: username = self.slave_login password = self.__slave_password ssh_client = SSHClient( host=ip, port=port, username=username, password=password, private_keys=keys ) if ip != self.admin_ip: ssh_client.sudo_mode = True self.connections[(ip, port)] = ssh_client logger.debug('SSH_MANAGER:Return existed connection for ' '{ip}:{port}'.format(ip=ip, port=port)) logger.debug('SSH_MANAGER: Connections {0}'.format(self.connections)) return self._connect(self.connections[(ip, port)])
def update_connection(self, ip, login=None, password=None, keys=None, port=22): """Update existed connection :param ip: host ip string :param login: login string :param password: password string :param keys: list of keys :param port: ssh port int :return: None """ if (ip, port) in self.connections: logger.info('SSH_MANAGER:Close connection for {ip}:{port}'.format( ip=ip, port=port)) self.connections[(ip, port)].clear() logger.info('SSH_MANAGER:Create new connection for ' '{ip}:{port}'.format(ip=ip, port=port)) self.connections[(ip, port)] = SSHClient( host=ip, port=port, username=login, password=password, private_keys=keys if keys is not None else [])
def get_remote(self, ip, port=22): """ Function returns remote SSH connection to node by ip address :param ip: IP of host :param port: port for SSH :return: SSHClient """ if (ip, port) not in self.connections: logger.debug('SSH_MANAGER:Create new connection for ' '{ip}:{port}'.format(ip=ip, port=port)) keys = self._get_keys() if ip != self.admin_ip else [] if ip == self.admin_ip: ssh_client = SSHClient( host=ip, port=port, username=self.admin_login, password=self.__admin_password, private_keys=keys ) else: try: ssh_client = SSHClient( host=ip, port=port, username=self.slave_login, password=self.__slave_password, private_keys=keys ) except BadAuthenticationType: ssh_client = SSHClient( host=ip, port=port, username=self.slave_fallback_login, password=self.__slave_password, private_keys=keys ) ssh_client.sudo_mode = True self.connections[(ip, port)] = ssh_client logger.debug('SSH_MANAGER:Return existed connection for ' '{ip}:{port}'.format(ip=ip, port=port)) logger.debug('SSH_MANAGER: Connections {0}'.format(self.connections)) return self._connect(self.connections[(ip, port)])
def _get_remote(self, ip, port=22): """ Function returns remote SSH connection to node by ip address :param ip: IP of host :param port: port for SSH :return: SSHClient """ if (ip, port) not in self.connections: logger.debug('SSH_MANAGER:Create new connection for ' '{ip}:{port}'.format(ip=ip, port=port)) keys = self._get_keys() if ip != self.admin_ip else [] self.connections[(ip, port)] = SSHClient(host=ip, port=port, username=self.login, password=self.__password, private_keys=keys) logger.debug('SSH_MANAGER:Return existed connection for ' '{ip}:{port}'.format(ip=ip, port=port)) logger.debug('SSH_MANAGER: Connections {0}'.format(self.connections)) return self._connect(self.connections[(ip, port)])