def get_facts(self): sh_ver = self.device.show_version() for line in sh_ver.splitlines(): if 'Cisco IOS XR Software' in line: os_version = line.split()[-1] elif 'uptime' in line: uptime = string_parsers.convert_uptime_string_seconds(line) hostname = line.split()[0] fqdn = line.split()[0] elif 'Series' in line: model = ' '.join(line.split()[1:3]) interface_list = list() for x in self.device.show_interface_description().splitlines()[3:-1]: if '.' not in x: interface_list.append(x.split()[0]) result = { 'vendor': u'Cisco', 'os_version': unicode(os_version), 'hostname': unicode(hostname), 'uptime': uptime, 'model': unicode(model), 'serial_number': u'', 'fqdn': unicode(fqdn), 'interface_list': interface_list, } return result
def get_facts(self): sh_ver = self.device.show_version() for line in sh_ver.splitlines(): if "Cisco IOS XR Software" in line: os_version = line.split()[-1] elif "uptime" in line: uptime = string_parsers.convert_uptime_string_seconds(line) hostname = line.split()[0] fqdn = line.split()[0] elif "Series" in line: model = " ".join(line.split()[1:3]) interface_list = list() for x in self.device.show_interface_description().splitlines()[3:-1]: if "." not in x: interface_list.append(x.split()[0]) result = { "vendor": u"Cisco", "os_version": unicode(os_version), "hostname": unicode(hostname), "uptime": uptime, "model": unicode(model), "serial_number": u"", "fqdn": unicode(fqdn), "interface_list": interface_list, } return result
def get_facts(self): sh_ver = self.device.show_version() for line in sh_ver.splitlines(): if 'Cisco IOS XR Software' in line: os_version = line.split()[-1] elif 'uptime' in line: uptime = string_parsers.convert_uptime_string_seconds(line) hostname = line.split()[0] fqdn = line.split()[0] elif 'Series' in line: model = ' '.join(line.split()[1:3]) interface_list = list() for x in self.device.show_interface_description().splitlines()[3:-1]: if '.' not in x: interface_list.append(x.split()[0]) result = { 'vendor': u'Cisco', 'os_version': unicode(os_version), 'hostname': unicode(hostname), 'uptime': uptime, 'model': unicode(model), 'serial_number': u'', 'fqdn': unicode(fqdn), 'interface_list': interface_list, } return result
def get_facts(self): system_status = execute_get(self.device, 'get system status') performance_status = execute_get(self.device, 'get system performance status') interfaces = execute_get(self.device, 'get system interface | grep ==') interface_list = [x.split()[2] for x in interfaces.keys()] domain = execute_get(self.device, 'get system dns | grep domain')['domain'] return { 'vendor': 'Fortigate', 'os_version': system_status['Version'].split(',')[0].split()[1], 'uptime': convert_uptime_string_seconds(performance_status['Uptime']), 'serial_number': system_status['Serial-Number'], 'model': system_status['Version'].split(',')[0].split()[0], 'hostname': system_status['Hostname'], 'fqdn': '{}.{}'.format(system_status['Hostname'], domain), 'interface_list': interface_list }
def get_facts(self): output = self.device.facts uptime = 0 if 'RE0' in output: uptime = output['RE0']['up_time'] interfaces = junos_views.junos_iface_table(self.device) interfaces.get() interface_list = interfaces.keys() return { 'vendor': u'Juniper', 'model': unicode(output['model']), 'serial_number': unicode(output['serialnumber']), 'os_version': unicode(output['version']), 'hostname': unicode(output['hostname']), 'fqdn': unicode(output['fqdn']), 'uptime': string_parsers.convert_uptime_string_seconds(uptime), 'interface_list': interface_list }
def get_facts(self): system_status = execute_get(self.device, 'get system status') performance_status = execute_get(self.device, 'get system performance status') interfaces = execute_get(self.device, 'get system interface | grep ==') interface_list = [x.split()[2] for x in interfaces.keys()] domain = execute_get(self.device, 'get system dns | grep domain')['domain'] return { 'vendor': 'Fortigate', 'os_version': system_status['Version'].split(',')[0].split()[1], 'uptime': convert_uptime_string_seconds(performance_status['Uptime']), 'serial_number': system_status['Serial-Number'], 'model': system_status['Version'].split(',')[0].split()[0], 'hostname': system_status['Hostname'], 'fqdn': '{}.{}'.format(system_status['Hostname'], domain), 'interface_list': interface_list }
def get_facts(self): output = self.device.facts uptime = 0 if 'RE0' in output: uptime = output['RE0']['up_time'] interfaces = junos_views.junos_iface_table(self.device) interfaces.get() interface_list = interfaces.keys() return { 'vendor': u'Juniper', 'model': unicode(output['model']), 'serial_number': unicode(output['serialnumber']), 'os_version': unicode(output['version']), 'hostname': unicode(output['hostname']), 'fqdn': unicode(output['fqdn']), 'uptime': string_parsers.convert_uptime_string_seconds(uptime), 'interface_list': interface_list }
def get_bgp_neighbors(self): def search_line_in_lines(search, lines): for l in lines: if search in l: return l families = ['ipv4', 'ipv6'] terms = dict({'accepted_prefixes': 'accepted', 'sent_prefixes': 'announced'}) command_sum = 'get router info bgp sum' command_detail = 'get router info bgp neighbor {}' command_received = 'get router info bgp neighbors {} received-routes | grep prefixes ' peers = dict() bgp_sum = self.device.execute_command(command_sum) re_neigh = re.compile("^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+") neighbors = {n.split()[0]: n.split()[1:] for n in bgp_sum if re.match(re_neigh, n)} self.device.load_config('router bgp') for neighbor, parameters in neighbors.iteritems(): logger.debug('NEW PEER') neigh_conf = self.device.running_config['router bgp']['neighbor']['{}'.format(neighbor)] neighbor_dict = peers.get(neighbor, dict()) if not neighbor_dict: neighbor_dict['local_as'] = int(bgp_sum[0].split()[7]) neighbor_dict['remote_as'] = int(neigh_conf.get_param('remote-as')) neighbor_dict['is_up'] = 'never' != parameters[7] or False neighbor_dict['is_enabled'] = neigh_conf.get_param('shutdown') != 'enable' or False neighbor_dict['description'] = u'' neighbor_dict['uptime'] = convert_uptime_string_seconds(parameters[7]) neighbor_dict['address_family'] = dict() neighbor_dict['address_family']['ipv4'] = dict() neighbor_dict['address_family']['ipv6'] = dict() detail_output = [x.lower() for x in self.device.execute_command(command_detail.format(neighbor))] m = re.search('remote router id (.+?)\n', '\n'.join(detail_output)) if m: neighbor_dict['remote_id'] = unicode(m.group(1)) else: raise Exception('cannot find remote router id for %s' % neighbor) for family in families: # find block x = detail_output.index(' for address family: {} unicast'.format(family)) block = detail_output[x:] for term, fortiname in terms.iteritems(): text = search_line_in_lines('%s prefixes' % fortiname, block) t = [int(s) for s in text.split() if s.isdigit()][0] neighbor_dict['address_family'][family][term] = t received = self.device.execute_command( command_received.format(neighbor))[0].split() if len(received) > 0: neighbor_dict['address_family'][family]['received_prefixes'] = received[-1] else: # Soft-reconfig is not enabled neighbor_dict['address_family'][family]['received_prefixes'] = 0 peers[neighbor] = neighbor_dict return { 'global': { 'router_id': unicode(bgp_sum[0].split()[3]), 'peers': peers } }