Найти в Дзене
Николай Калюжный

Python для автоматизации сети

Оглавление

Этот скрипт подключается к перечисленным устройствам и создает резервные копии их конфигураций. Это просто, но показывает возможности Python в NetworkAutomation. С помощью всего нескольких строк кода можно автоматизировать задачу, которая в противном случае была бы утомительной и трудоемкой.

Конфигурация VLAN

Вы когда-нибудь оказывались в ситуации, когда вам нужно было стандартизировать конфигурацию имен VLAN для нескольких коммутаторов? Недавно мой друг столкнулся с похожей проблемой и обратился ко мне за помощью. Я решил использовать свои навыки Python, чтобы найти решение. Вот скрипт на Python, который стандартизирует имена VLAN для 100 коммутаторов.

  • У меня есть список VLAN для работы, у которых есть идентификатор VLAN и правильное имя.
  • Если конкретная виртуальная локальная сеть не существует на коммутаторе, не создавайте ее.
  • Если конкретная VLAN существует на коммутаторе, но имеет неправильное имя, сценарий должен изменить имя на правильное.
  • Скрипт никогда не должен удалять или создавать новые VLAN.

from netmiko import ConnectHandler

switch_list = ['10.10.20.18', '10.10.20.19', '10.10.20.20'] device_inventroy = [] vlans = { '10': 'MGMT', '20': 'DATA', '30': 'active_directory', '31': 'web_servers', '32': 'admin', '33': 'network' }
for ip in switch_list: device = { "device_type": "cisco_ios", "host": ip, "username": "cisco", "password": 'cisco123', "secret": 'cisco123' # Enable password } device_inventroy.append(device)
for switch in device_inventroy: connection = ConnectHandler(**switch) output = connection.send_command('show vlan', use_textfsm=True) connection.enable() # Enable method connection.config_mode() # Global config mode
current_vlans_dict = {} for vlan in output: current_vlans_dict[vlan['vlan_id']] = vlan['name']
for k,v in vlans.items(): if k in current_vlans_dict and v != current_vlans_dict[k]: commands = [f"vlan {k}", f"name {v}"] config_output = connection.send_config_set(commands) print(config_output)
connection.disconnect()

Некоторые продвинутые сценарии использования

Теперь давайте углубимся в некоторые более продвинутые (или, скажем так, продвинутые) сценарии использования, в которых Python действительно доказывает свою ценность в NetworkAutomation.

Cisco/Пало-Альто

Я не собираюсь углубляться в конкретные примеры, а скорее дам вам представление о сценариях, в которых можно использовать Python. Возьмем, к примеру, мою работу с межсетевыми экранами Пало-Альто. Palo Alto предлагает несколько вариантов автоматизации, таких как XML API, REST API и Python SDK. Хотя вы можете использовать XML или REST API без Python, их сопряжение с Python значительно упрощает процесс.

Используя Python в сочетании с Python SDK от Palo Alto, я могу настраивать брандмауэры с гораздо большей гибкостью и точностью. Это мощная комбинация, которая позволяет создавать более сложные, настраиваемые конфигурации, чем те, которые вы могли бы получить только с помощью стандартных инструментов.

Точно так же, когда вы работаете с устройствами Cisco, у вас есть такие варианты, как Netconf и Restconf. Это протоколы, предназначенные для настройки сети, и Python служит идеальным инструментом для программного взаимодействия с этими протоколами.

АРМ

Давайте поговорим об облачных средах, в частности об AWS. AWS Python SDK, известный как Boto3, – это инструмент, который я часто использую, и это прекрасный пример универсальности Python.

Представьте себе сценарий, при котором вам нужно выполнить действия в AWS на основе определенных событий или триггеров. Это может быть что угодно — от завершения работы экземпляра до создания сетевого интерфейса. Вот где Python в сочетании с AWS Lambda становится невероятно полезным.

С помощью AWS Lambda можно запускать скрипты Python в ответ на определенные события AWS без необходимости выделять серверы или управлять ими вручную. Например, я могу написать скрипт на Python, который использует Boto3 для мониторинга определенных условий или событий в моей среде AWS. Как только эти условия будут выполнены, скрипт может автоматически выполнять такие задачи, как изменение сетевых конфигураций, а также запуск или остановка экземпляров.

Заключение

Подводя итог, изучайте Python и пытайтесь использовать его в своих повседневных задачах.