def _login_glances(self): """Login to a Glances server""" client_version = None try: client_version = self.client.init() except socket.error as err: # Fallback to SNMP self.client_mode = 'snmp' logger.error("Connection to Glances server failed ({} {})".format( err.errno, err.strerror)) fallbackmsg = 'No Glances server found on {}. Trying fallback to SNMP...'.format( self.uri) if not self.return_to_browser: print(fallbackmsg) else: logger.info(fallbackmsg) except ProtocolError as err: # Other errors msg = "Connection to server {} failed".format(self.uri) if err.errcode == 401: msg += " (Bad username/password)" else: msg += " ({} {})".format(err.errcode, err.errmsg) self.log_and_exit(msg) return False if self.client_mode == 'glances': # Check that both client and server are in the same major version if __version__.split('.')[0] == client_version.split('.')[0]: # Init stats self.stats = GlancesStatsClient(config=self.config, args=self.args) self.stats.set_plugins(json.loads(self.client.getAllPlugins())) logger.debug("Client version: {} / Server version: {}".format( __version__, client_version)) else: self.log_and_exit( ('Client and server not compatible: ' 'Client version: {} / Server version: {}'.format( __version__, client_version))) return False return True
def _login_glances(self): """Login to a Glances server""" client_version = None try: client_version = self.client.init() except socket.error as err: # Fallback to SNMP self.client_mode = 'snmp' logger.error("Connection to Glances server failed ({} {})".format(err.errno, err.strerror)) fallbackmsg = 'No Glances server found on {}. Trying fallback to SNMP...'.format(self.uri) if not self.return_to_browser: print(fallbackmsg) else: logger.info(fallbackmsg) except ProtocolError as err: # Other errors msg = "Connection to server {} failed".format(self.uri) if err.errcode == 401: msg += " (Bad username/password)" else: msg += " ({} {})".format(err.errcode, err.errmsg) self.log_and_exit(msg) return False if self.client_mode == 'glances': # Check that both client and server are in the same major version if __version__.split('.')[0] == client_version.split('.')[0]: # Init stats self.stats = GlancesStatsClient(config=self.config, args=self.args) self.stats.set_plugins(json.loads(self.client.getAllPlugins())) logger.debug("Client version: {} / Server version: {}".format(__version__, client_version)) else: self.log_and_exit("Client and server not compatible: \ Client version: {} / Server version: {}".format(__version__, client_version)) return False return True
def login(self): """Logon to the server.""" ret = True if not self.args.snmp_force: # First of all, trying to connect to a Glances server client_version = None try: client_version = self.client.init() except socket.error as err: # Fallback to SNMP self.client_mode = 'snmp' logger.error( "Connection to Glances server failed ({0} {1})".format( err.errno, err.strerror)) fallbackmsg = 'No Glances server found. Trying fallback to SNMP...' if not self.return_to_browser: print(fallbackmsg) else: logger.info(fallbackmsg) except ProtocolError as err: # Other errors msg = "Connection to server failed" if err.errcode == 401: msg += " (Bad username/password)" else: msg += " ({0} {1})".format(err.errcode, err.errmsg) self.log_and_exit(msg) return False if self.client_mode == 'glances': # Check that both client and server are in the same major version if __version__.split('.')[0] == client_version.split('.')[0]: # Init stats self.stats = GlancesStatsClient(config=self.config, args=self.args) self.stats.set_plugins( json.loads(self.client.getAllPlugins())) logger.debug( "Client version: {0} / Server version: {1}".format( __version__, client_version)) else: self.log_and_exit("Client and server not compatible: \ Client version: {0} / Server version: {1}" .format(version, client_version)) return False else: self.client_mode = 'snmp' # SNMP mode if self.client_mode == 'snmp': logger.info("Trying to grab stats by SNMP...") from glances.stats_client_snmp import GlancesStatsClientSNMP # Init stats self.stats = GlancesStatsClientSNMP(config=self.config, args=self.args) if not self.stats.check_snmp(): self.log_and_exit("Connection to SNMP server failed") return False if ret: # Load limits from the configuration file # Each client can choose its owns limits self.stats.load_limits(self.config) # Init screen self.screen = GlancesCursesClient(args=self.args) # Return result return ret