Добрый день! Я поделюсь с Вами интересным опытом по созданию
мобильного инструмента для работы с сетью.
Предисловие
Я отработал несколько лет в провайдерах, начиная с маленького до
федерального. Придя в Федерала я столкнулся с большим количеством
рутины, и появилось желание автоматизировать тот самый рутинный
процесс.
2013 год. У меня есть товарищ, который так же работал в одном из
федералов, подключая клиентов и была история, когда он мне дал в
руки телефон и полез на чердак что-то там делать с коммутатором. Я
снизу стоял с телефоном на котором была открыта веб страничка с
разными интересными скриптами. Скрипты эти выполняли проверку порта
на коммутаторе, чистку ошибок и прочего.
То есть, инженер придя на адрес не беспокоил администратора по
глупостям, т.к. у него самого был инструмент для работы с
сетью.
На дворе июнь 2018 года, и я мучался с мыслями о том что А почему
бы не написать бота который бы проверял оборудование разного
уровня(ядро, агрегация, доступ)?. Проблема была в том что избавится
от рутины хотел только я один, остальные жили сегодняшним днём.
Выбор языка программирования и платформы
Ребят, ну конечно же Python. На момент задумок я уже имел кое-какие
навыки и небольшой опыт написания скриптов. Платформа была выбрана
дружелюбная Telegram т.к. все IT-шники там и обитают.
Выбор библиотек для написания бота
1. Библиотека для работы с Telegram. pyTelegramBotAPI угасал, тем более во времена
блокировок хотелось быстро дружиться с прокси и прочими вещами. Я
выбрал python-telegram-bot, и за основу взял
Conversation.
2. Библиотека для работы с оборудованием. Из-за простоты работы,
мой выбор пал на python3-netsnmp.
Основа положена, пришло время писать.
Погнали
Сеть была зоопарком железа и пришлось брать отдельно вендора
определенного и работать с ним. Так же важное условие было, наличие
MIB-ов для выполнения задач.
Одна из задач была проверка длины кабеля и состояние пар, проверка
состояния портов и наличия ошибок на портах.
Сейчас многие напишут мол Ну а что без SNMP обойтись было нельзя?.
Отвечу, что Да, нельзя, если вы хотите снимать данные нормальным
человеческим образом то только SNMP.
Сейчас кого-то уже подгорает пукан и он пишет что только
NETCONF.
Пройдя оборудование доступа и реализовав с ним работу в боте, я
столкнулся с тем что иногда действительно для специфичных задач,
который протокол SNMP не решит, придётся заходить на
оборудование.
На помощь мне пришла библиотека netmiko и я по-прежнему остаюсь ей доволен.
Она решила очень много задач даже не связанных с ботом. Количество
поддерживаемого оборудования просто огонь.
Так же для проверки IP-адресов мне очень пригодилась библиотека
ipaddress
В целом, при программировании я учел много нюансов начиная от
авторизации пользователя в боте до выдачи ему разных прав.
Функционал рос
Да, функционал действительно рос, а с ним и росла поддержка
определенного оборудования. Я добавлял оборудование радио доступа,
оптические приемники КТВ.
Как-то ко мне пришли люди и говорят вот мы будем ставить домофоны.
Я головой своей понимаю что настройка так же ляжет на мои плечи и
плечи коллег.
Я начал щупать, смотреть. Читал API, которое благо там было. Выбрал
самую простую библиотеку для работы с HTTP и HTTPS requests.
Накрутив уже работу с домофонами появились потребности в базе, но
как обычно ленивой *опе сильно напрягаться не хотелось. Поэтому
выбор пал на sqlite3. Библиотека так же была выбрана максимально
простая это dataset.
Тучи сгущаются
В какой-то момент работы становилось безумно много и моё детище по
факту жило самостоятельно. Работы много, денег мало ну вы думаю
улавливаете нотку. Я решил покинуть это заведение. Отработав
несколько лет в федерале я неплохо прокачал skill по работе с
языком программирования. Остался очень этим доволен.
Эпилог
Пожалуй, это толи большая, толи не очень история подошла к
завершению. Сетевик на мой взгляд без программирования никуда,
особенно с зоопарком железа. В итоге парк поддерживаемого
оборудования был такой:
23 модели коммутаторов доступа
3 модели оптических приемников КТВ
4 модели шассийных коммутаторов
1 модель шассийного маршрутизатора
3 модели оборудования радио доступа