SEIATC — Как я использую Python?

Добро пожаловать в мой второй пост из серии Инженер-программист в телекоммуникационной компании. Если вы еще не прочитали первый пост. Вы можете прочитать его по ссылке эта.

Python — один из старейших членов моего набора навыков. Как вы, возможно, уже знаете, я не фанатик инструментов. не вижу в этом никакой ценности. Языки программирования — это инструменты, которые мы используем для решения наших реальных жизненных проблем. Нам может нравиться один из них больше, чем другие, но лучше пользоваться всеми. После этого объяснения вы можете ясно увидеть мою позицию. Я люблю Python, но это не мешает мне видеть его недостатки, а также преимущества.

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

Я не хочу углубляться в такие дискуссии, как «Достаточно ли быстр Python?», «Почему вам следует использовать Python для этого, а не для этого?» вместо этого я хотел бы упомянуть, почему это хороший выбор для нашего случая.

1. Легко учиться

Python имеет очень простой синтаксис. Вы можете спорить со мной об отступах, однако, если вы проверите количество проектов Python, мы можем сказать, что есть много людей, которые уже приняли его. Между прочим, у этих людей очень разный бэкграунд: от школьных учителей до инженеров-биоинформаторов.

2. Коллекция библиотек

Как инженер-программист, мне нравится видеть, что остается под капотом. Однако когда дело доходит до создания сложных систем, я не предпочитаю изобретать велосипед, пока есть стабильное и доступное решение. Python имеет множество библиотек, которые обеспечивают эти ожидания. Давайте посмотрим, чем я часто пользуюсь.

Если вы имеете дело с сетевым оборудованием, вам нужно иметь дело с большим количеством IP-математики. Библиотеки ipaddress и netaddr очень полезны для такого рода операций. Если это просто простые операции, такие как проверка версии IP, проверка IP и т. д., я предпочитаю встроенную библиотеку ipaddress. Но для более сложных операций, таких как назначение IP-адреса из определенной подсети, проверка размера подсети в соответствии с топологией и т. д., я выбираю netaddr. Но вместо того, чтобы быть встроенной библиотекой, netaddr является сторонней библиотекой, лицензированной BSD, которая широко используется для манипулирования сетевыми адресами.

Манипуляции с IP — это только начало нашего пути. Доступ к сетевому оборудованию и сбор информации об этом устройстве так же важны, как и подготовка пула IP-адресов без дублирования. На рынке представлено несколько видов сетевого оборудования. Даже если я работаю на одного из поставщиков, мне нужно знать, как получить доступ к устройствам других поставщиков и какая информация доступна на этих устройствах для меня. Эта информация является критической, особенно при переходе из сторонней сети.

Для получения этой информации мне нужно получить доступ к этим устройствам, а затем обработать доступные данные. Библиотеки netmiko/paramiko очень распространены в нашей команде. Честно говоря, мне даже не хочется их сравнивать. Я просто использовал то, что представлено в проекте, в который я вношу свой вклад. Поскольку я использую их только для установки ssh-соединений, я не думаю, что это будет иметь какое-то значение :)

Когда дело доходит до сбора и обработки таких данных, textfsm — мой лучший друг. Согласно его документации, textfsm — это «модуль Python, который реализует конечный автомат на основе шаблонов для анализа полуформатированного текста». Благодаря этому мы можем легко анализировать и получать связанную информацию с нескольких разных устройств.

3. Широкий диапазон применения

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

В конце концов, я пока доволен Python. Дайте мне знать, каков ваш опыт.