Netmiko и Textfsm Path and Env Issue Windows - PullRequest
0 голосов
/ 14 апреля 2020

В настоящее время я пытаюсь настроить тест с Netmiko и Textfsm в Windows 10, но независимо от того, по какому пути я пытаюсь настроить переменную среды textfsm, он все равно не подхватывает ее и выдает ошибку:

Действительные nt c - шаблоны не найдены, пожалуйста, установите https://github.com/networktocode/ntc-templates и затем установите переменную среды NET_TEXTFSM, чтобы она указывала на ./ntc-templates/templates directory.

Я пытался установить переменную среды вручную через системные свойства -> переменные среды, но все равно получал то же сообщение. Я пробовал как абсолютные, так и относительные пути и не go. В идеале относительный путь в качестве папки шаблона всегда должен быть рядом со скриптом, вызывающим его. Это может быть что-то простое, но я прямо сейчас упускаю это.

Структура папки:

enter image description here

Мой код:

import os, json
from netmiko import Netmiko
from netmiko import NetMikoAuthenticationException

templates = os.path.dirname(os.path.abspath(__file__)) + '\\ntc-template\\templates\\'
os.environ['NET_TEXTFSM']= templates
print(os.environ['NET_TEXTFSM'])

###############################################################
#Can i set the env var from within the scirpt using python?
#os.system(f'cmd /c "set NET_TEXTFSM={templates}"')
###############################################################

switch = {'device_type': 'cisco_ios',
            'ip': '192.168.0.20',
            'username': 'cisco',
            'password': 'cisco',
            'secret': 'cisco',
            'timeout': 10000,
            'session_timeout': 10000}

try:
    c = Netmiko(**switch)
    c.enable()
    show_ip_arp = c.send_command('show ip arp', use_textfsm=True)
    print(json.dumps(show_ip_arp))
except Exception as e:
    print(e)

Я надеялся, что кто-нибудь укажет на то, что может быть не так или отсутствует. Я бы хотел избежать необходимости устанавливать какие-либо переменные окружения с помощью cmd, если только это не может быть автоматизировано. Идея в том, что тот, кто откроет этот py-файл, получит все, что нужно для использования textfsm.

1 Ответ

0 голосов
/ 21 апреля 2020

Проблема устранена с помощью владельца репозитория netmiko:

Приведенный ниже код работает со следующими библиотеками и версией:

netmiko==3.1.0
ntc-templates==1.4.0
textfsm==1.1.0
import os, json
import ntc_templates
from netmiko import Netmiko
from netmiko import NetMikoAuthenticationException

switch = {'device_type': 'cisco_ios',
            'ip': '192.168.0.20',
            'username': 'cisco',
            'password': 'cisco',
            'secret': 'cisco',
            'timeout': 10000,
            'session_timeout': 10000}

try:
    c = Netmiko(**switch)
    c.enable()
    show_ip_arp = c.send_command('show ip arp', use_textfsm=True)
    print(show_ip_arp)
except Exception as e:
    print(e)
...