Использование Библиотеки Python Exscript Для Работы С Оборудованием Cisco И Huawei Через Ssh

Перед Python-приложением стояла задача получения данных от сетевого оборудования и их настройки удаленно через SSH. Вы можете использовать Paramiko, а можете пропустить колесо и использовать основанную на нем библиотеку Exscript. Ниже под катом приведены примеры кода для подключения и получения информации от команд. Из-за отсутствия документации по Exscript этот материал может оказаться кому-то очень полезным.



Использование библиотеки Python Exscript для работы с оборудованием Cisco и Huawei через SSH

Для начала импортируем библиотеку (если ее нет в системе, ее можно скачать на гите)

  
  
   

from Exscript import Account from Exscript.protocols import SSH2

Для Cisco, например, мы пингуем Google, но ничто не мешает нам использовать команды для настройки:

acc = Account('USERNAMESSHAAA', 'PASS') con = SSH2() con.connect('ROUTER_IP') con.login(acc) con.execute('terminal length 0') con.execute('ping vrf INTERNET 8.8.8.8') con.send('exit') output = con.response

Результат будет:
пинг vrf ИНТЕРНЕТ 8.8.8.8 Ср 11 мая 19:13:25.551 FET Введите escape-последовательность для аборта.

Отправка 5 100-байтовых сообщений ICMP на адрес 8.8.8.8, время ожидания составляет 2 секунды: !!! Вероятность успеха составляет 100 процентов (5/5), время прохождения туда и обратно мин/сред/макс = 20/20/21 мс.

РП/2/РСП2/ЦП1:Мск-1-ср9000#

Именно на Huawei возникла проблема, с которой она боролась уже долгое время — нежелание Exscript ждать завершения операции требуемое время и отправки подтверждения.

Например, при диагностике пар на линии необходимо было подтвердить прерывание услуги на некоторое время, нажав y и подтвердив Enter, а затем подождать пару секунд до завершения теста.

На этом этапе Exscript повесил трубку и методом проб и ошибок нашел решение.

Пример работы в консоли при ручном подключении к коммутатору для выполнения данной задачи: система Войдите в системный вид, вернитесь в пользовательский вид с помощью Ctrl+Z. [SW]int g0/0/5 [SW-GigabitEthernet0/0/5]v Предупреждение: команда остановит обслуживание на некоторое время, продолжить?[Да/Нет]:y Длина пары А: 56 метров Длина пары B: 56 метров Длина пары C: 56 метров Длина пары D: 56 метров Состояние пары А: Открыто Состояние пары B: Открыто Состояние пары C: Открыто Состояние пары D: Открыто [SW-GigabitEthernet0/0/5] А вот как это можно сделать в Exscript, ограничив случайную проверку на аплинках через вычет в Описании триггера бана To_Smth_Important_Device:

acc = Account('USERNAMESSHAAA', 'PASS') con = SSH2() con.connect('ROUTER_IP') con.login(acc) con.execute('screen-length 0 temporary') con.execute('sys') con.execute('interface GigabitEthernet0/0/2') con.execute('disp th') upck = '' upck = con.response if 'To' not in upck: con.set_prompt(r'Y') con.execute('vi') con.set_prompt('Pair D state.{0,20}') con.execute('Y') output = con.response else: output = 'UPLINK DETECTED! TEST ON UPLINKS RESTRICTED!' con.send('quit\r') con.send('quit\r') con.send('quit\r')

В выводе:

/Н]:Да Информация: Эта операция может занять несколько секунд. Пожалуйста, подождите немного.

готово.

Длина пары А: 56 метров Длина пары B: 56 метров Длина пары C: 56 метров Длина пары D: 56 метров Состояние пары А: Открыто Состояние пары B: Открыто Состояние пары C: Открыто Состояние пары D: Открыто

Вы можете анализировать вывод по своему усмотрению.

Спасибо за внимание! Теги: #cisco #cisco #python #Huawei #ssh #telecommunication #python

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.