Junos PyEZ
Материал из Xgu.ru
Junos PyEZ это Python API для Junos based устройств, позволяющий решать задачи автоматизации различного рода от сбора какой-либо информации с устройств до их кнфигурирования.
Содержание |
[править] Основные возможности:
- Сбор "фактов" о сетевом оборудовании, таких как версия software, серийный номер устройства и т.д.
- Сбор оперативной информации /состояний используя концепцию Tables/ Views
- Сбор информации о конфигурации устройства использую концепцию Tables/Views
- Выполнение неструктурированных изменений конфигураций
- Выполнение структурированных изменений конфигураций
- Предоставление утилит для задач, подобным апгрейду software или secure copy
[править] Установка на linux системы:
[править] Список зависимостей для систем Ubuntu/Debian
- python-pip
- python-dev
- libxml2-dev
- libxslt-dev
[править] PyPI
Подразумевает, что pip установлен для Python2.7
pip install junos-eznc
[править] Github
Рекомендуется если вам необходима самая свежая версия PyEZ, это подразумевает что Python2.7 и git system package установлен в системе.
pip install git+https://github.com/Juniper/py-junos-eznc.git или pip install git+https://github.com/Juniper/py-junos-eznc.git@<branch,tag,commit>
[править] Hello World! или подключаемся к нашему устройству
[править] Вкратце:
Каждое подключение Junos устройства моделируется переменной jnpr.junos.Device(или инстансом, вопрос терминологии). В общем вы создаете по переменной на каждое устройство, в котором обязательным параметром является hostname или ip address устройства. Опционально можно указать username(по умолчанию значение переменной $USER в юникс системах) и пароль( по умолчанию опять же используется ssh-аутентификация по ключам). Затем вы создаете соединение с устройством, выполняете различную активность и закрываете его. Каждый инстанс junos устройства содержит набор фактов, который загружается при открытии соединения. Набор фактов это обычно статические куски информации об устройстве, software version, uptime, model и т.д.
[править] Использование:
Для того чтобы PyEZ заработал на устройстве должен быть включен протокол NETCONF:
root@vsrx1> configure root@vsrx1# set system services netconf ssh root@vsrx1# commit
Чтобы подключиться к устройству для начала нужно импортировать модуль Device.
from jnpr.junos import Device
Далее необходимо создать инстанс устройства:
dev = Device(host='vsrx1', user='root', password='MySecretPASS')
И потом вызвать функцию подключающуюся к нашему устройству:
dev.open()
Всё подключение к устройству завершено. Можно к примеру посмотреть на список фактов, полученных от устройства.
print dev.facts
Или же определенный факт(напомню данные хранятся в питоновском словаре). Например uptime:
print dev.facts['RE0']['up_time'] 3 hours, 13 minutes, 26 seconds