简体   繁体   中英

Using textFSM to parse multiple show commands

I'm trying to use textFSM to compile some Juniper "show" command outputs and get specific fields from them and finally printing collected info in one run. This is my code:

 import textfsm import getpass from.netmiko import ConnectHandler from.netmiko.ssh_exception import NetMikoTimeoutException, NetMikoAuthenticationException import os def enable.netconf(remote_device): junos_device = ConnectHandler(**remote_device) command_2 = junos_device.send_command("show interfaces") junos_device.disconnect() def main(): print("Enter Device info to check:\n") tuser = input("Enter username: ") tpw = getpass.getpass() with open("D:\Documents\sample3.csv", encoding='utf-8') as tf: for line in tf: my_ip = line.rstrip(os.linesep) remote_device = { 'device_type': 'juniper', 'ip': my_ip, 'username': tuser, 'password': tpw, } enable.netconf(remote_device) with open("D:\Documents\juniper_junos_show_interfaces.textsm", "r") as f: template = textfsm.TextFSM(f) result = template.ParseText(command_2) print(result) if __name__ == '__main__': main()

I used Netmiko to connect to Juniper vMX device. I also download textFSM "show interfaces" temple from this link ( https://github.com.networktocode/ntc-templates/blob/master/ntc_templates/templates/juniper_junos_show_interfaces.textfsm ) and saved them in D:\Documents folder.

first of All I need to make the basic function of textFSM to work. in the above code I got the error saying that "command_2" variable has not been defined which as seen I defined it inside the "def enable.netconf(remote_device)".

Would you please help me on this as I'm a newbie in Python. Thanks.

If you want to use a variable in a different def, you can use the global command. In this example, just put "global comman_2" just below def enable.netconf(remote_device):

def enable.netconf(remote_device):

global command_2
junos_device = ConnectHandler(**remote_device)
command_2 = junos_device.send_command("show interfaces")
junos_device.disconnect()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM