Interface name issue - on switches
Closed this issue · 2 comments
ISSUE TYPE
- Bug Report
TEMPLATE USING
cisco_ios_show_interfaces_status.textfsm
ntc-templates 2.0.0
SAMPLE COMMAND OUTPUT
{'10.10.9.244': [{'port': 'Gi0/0', 'name': '', 'status': 'connected', 'vlan': '1', 'duplex': 'a-full', 'speed': 'auto', 'type': 'RJ45', 'fc_mode': ''}, {'port': 'Gi0/1', 'name': '', 'status': 'connected', 'vlan': 'to', 'duplex': 'FTD7', 'speed': 'connected', 'type': '99 a-full auto RJ45', 'fc_mode': ''}, {'port': 'Gi0/2', 'name': 'MGMT-SYSLOG', 'status': 'connected', 'vlan': 'routed', 'duplex': 'a-full', 'speed': 'auto', 'type': 'RJ45', 'fc_mode': ''}, {'port': 'Gi0/3', 'name': '', 'status': 'disabled', 'vlan': '1', 'duplex': 'auto', 'speed': 'auto', 'type': 'RJ45', 'fc_mode': ''}, {'port': 'Gi1/0', 'name': 'Connected to INTER', 'status': 'connected', 'vlan': '99', 'duplex': 'a-full', 'speed': 'auto', 'type': 'RJ45', 'fc_mode': ''}, {'port': 'Gi1/1', 'name': '', 'status': 'disabled', 'vlan': '1', 'duplex': 'auto', 'speed': 'auto', 'type': 'RJ45', 'fc_mode': ''}, {'port': 'Gi1/2', 'name': '', 'status': 'disabled', 'vlan': '1', 'duplex': 'auto', 'speed': 'auto', 'type': 'RJ45', 'fc_mode': ''}, {'port': 'Gi1/3', 'name': '', 'status': 'disabled', 'vlan': '1', 'duplex': 'auto', 'speed': 'auto', 'type': 'RJ45', 'fc_mode': ''}, {'port': 'Po1', 'name': '', 'status': 'notconnect', 'vlan': '1', 'duplex': 'auto', 'speed': 'auto', 'type': '', 'fc_mode': ''}, {'port': 'Po2', 'name': '', 'status': 'notconnect', 'vlan': 'unassigned', 'duplex': 'auto', 'speed': 'auto', 'type': '', 'fc_mode': ''}]}
When My device have description "connected" - then it taking as status 👍
SUMMARY
STEPS TO REPRODUCE
Python3
output = net_connect.send_command("show interface status", use_textfsm=True)
import getpass
import csv
import netmiko
import paramiko
import pandas as pd
import numpy as np
import os.path
from argparse import ArgumentParser
from datetime import datetime
from netmiko.ssh_exception import AuthenticationException, NetMikoTimeoutException
import multiprocessing
def connect_to_dev(device, mp_queue):
dev_id = device['ip']
return_data = {}
try:
net_connect = netmiko.ConnectHandler(**device)
output = net_connect.send_command("terminal length 0\n")
#output = net_connect.send_command("show interface status", use_textfsm=True, textfsm_template = "cisco_ios_show_interfaces_status.textfsm")
output = net_connect.send_command("show interface status", use_textfsm=True)
return_data[dev_id] = output
except NetMikoTimeoutException:
print('TimeoutException : '+dev_id)
return_data[dev_id] = "error timeout"
mp_queue.put(return_data)
return
except AuthenticationException:
print('Authentication Exception : ' +dev_id)
return_data[dev_id] = "error authentication"
mp_queue.put(return_data)
return
print("Adding the result to the multiprocess queue")
mp_queue.put(return_data)
def main():
parser = ArgumentParser(description='Arguments for running oneLiner.py')
parser.add_argument('-c', '--csv', required=True, action='store', help='Location of CSV file')
args = parser.parse_args()
authenticate= True;
ssh_username = input("SSH username: ")
ssh_password = getpass.getpass('SSH Password: ')
device_map = {}
devices = []
with open(args.csv, 'r') as file:
reader = csv.DictReader(file)
for device_row in reader:
device = {}
device["ip"] = device_row['DeviceIP']
device["username"] = ssh_username
device["password"] = ssh_password
device["device_type"] = "cisco_ios"
devices.append(device)
device_map[device_row['DeviceIP']] = device_row['Name']
mp_queue = multiprocessing.Queue()
processes = []
for device in devices:
p = multiprocessing.Process(target=connect_to_dev, args=[device, mp_queue])
print("Adding Process to the list")
processes.append(p)
p.start()
for p in processes:
print("Joining the finished process to the main truck")
p.join()
results = []
for p in processes:
print("Moving the result from the queue to the results list")
results.append(mp_queue.get())
for r in results:
print(r)
if name == "main":
main()
EXPECTED RESULTS
{'port': 'Gi0/1', 'name': 'connected to FTD7', 'status': 'connected', 'vlan': '99', 'duplex': 'a-full', 'speed': 'auto', 'type': 'RJ45', 'fc_mode': ''},
ACTUAL RESULTS
{'port': 'Gi0/1', **'name': '', 'status': 'connected', 'vlan': 'to', 'duplex': 'FTD7', 'speed': 'connected', 'type': '99 a-full auto RJ45', 'fc_mode': ''},
Because the description has "connected" it taking as status - if the description have Caps "C" it taking as description
Please provide raw output
@hariram32
This was fixed in PR #1449