Админская фамилия

Make Sysadmins Great Again

The Dude – Network  management and monitoring  software


PHP IPAM. Импорт из Excel

IP Address Management (сокращенно IPAM) – средство планирования, отслеживания и управления IP адресами в сети (via). В больших сетях отследить все используемые адреса и приготовиться к их изменению или внедрению новых – большая, трудновыполнимая задача. База данных IP адресов у многих ведется в различных табличка (Google Docs, Excel), у остальных не ведется совсем.При изменениях в сети оперировать информацией из этих мест становится все сложнее и документы быстро теряют свою актуальность.Именно поэтому было решено развернуть сервер управления IP адресами в нашей сети. После мук выбора я остановился на PHP IPAM - он показался мне наиболее дружелюбным и функциональным, к тому же имеет API для взаимодействия с внешними системами.Посмотреть на демо это системы можно тутКак происходит установка этой замечательной системы я рассказывать не буду - всё и так хорошо описано в Интернете. Если будут вопросы - спрашивайте в комментарияхА так как сеть у меня уже большая и информация о ней мало где отражена, то актуальнейшая информация находится в таблицах маршрутизации роутеров. Эту информацию нужно внести в базу данных сервера IPAM. А как это сделать, я сейчас расскажу.С помощью системы мониторинга The Dude выгружаем таблицу маршрутизации в csvЭкспорт из Dude в csvОткрываем Excel и загружаем данные. Данные - из текстаИмпорт csv в ExcelВыбираем наш файл. В открывшемся окне указываем формат - с разделителям и жмем далееС разделителямиThe Dude экспортирует в файл с раделителями - запятыми, поэтому выбираем “запятые” и жмем далееРазделители - запятыеНа следующем шаге жмем кнопку “Готово”Готово!Выбираем ячейку, начиная с которой нужно вставить данные - обычно это А1. И наслаждаемся результатом. Теперь можно подкорректировать табличку.ExcelТеперь нам нужно сформировать csv, который принял бы наш IPAM сервер. А у него следующий формат файла для импорта:Формат csv для импорта в IPAMsection name*(varchar(128)),    subnet*(varchar(255)),   mask(varchar(3)),  description(text),   vlan name(varchar(255)),   domain name(varchar(64)),   vrf name(varchar(32)). Обязательны только первые два параметра - имя секции и подсеть.Оставим только нужную нам информациюУбрали ненужноеКак видим, остались только данные о подсети и связанного с ней филиала. Но имя интерфейса нам ни к чему, поэтому из строки вида <sstp-pub-740102> надо сделать RB740102. В этом нам поможет ExcelНайти и заменитьТеперь нам нужно избавиться от закрывающего спецсимвола “>">Финиш близкоПриведем нашу табличку к такому видуГотовый ExcelИ сохраним как csv. Excel ругнется на то, что мы потеряем данные, но мы готовы на такой риск =)В итоге должны получить файл следующего видаCSVЕго уже можно импортировать в PHP IPAM. Заходим в Administration - Import/ExportImportВ PHP IPAM на данный момент в версии 1.2 rev1 доступен импорт только subnets. Поэтому выбираем subnets и жмем ImportImport subnetsЖмем BrowseBrowseВыбираем наш csv и жмем открыть.На этом этапе мы должны получить ошибку: Error: Upload directory is not writable, or does not exist.Error: Upload directory is not writable, or does not exist.Это значит, что у веб-сервера нет прав на запись в папку upload. Добавим эти права. Выполним в консоли  sudo chmod -R g+w o+w /var/www/html/phpipam/app/admin/import-export/upload/ Тут должен быть путь до вашего сервера IPAM! ImportПовторяем пункты импорта. Система выдаст предупреждение о том, что не все пункты сопоставлены. Точно - в первом столбце пусто. Выбираем там section name и жмем Preview. Если все хорошо, то система покажет список импортируемых подсетей и их именаUploaded dataЖмем Import и проверяем указанную в поле section csv-файла секцию. Наши записи успешно импортированы!Готово! 


The Dude и D-Link по SNMPv3

У меня не получилось заставить работать тандем The Dude 4.0beta3 и коммутаторы D-Link (3120, 3200) по SNMPv3. Причем по SNMPv1 и v2 оно работает на ура. И по v3 Dude и Mikrotik прекрасно вяжутся.Решил не терять время и отказаться от этой затеи, потому что: а) beta и b)на форумах пишут, что проблема действительно есть


SMS оповещения из The Dude

Какой смысл в мониторинге ключевых устройств, если об их некорректной работе будет знать только сама система мониторинга? Именно поэтому система мониторинга должна оповещать админа о некорректной работе. Я работаю Mikrotik’ами, поэтому использую фирменную систему мониторинга The Dude. И сейчас мы научим её слать почту и смс.По умолчанию The Dude умеет отправлять email, но для этого ей нужен SMTP сервер без авторизации. Что нам поднимать конечно же не имеет смысла. В общем, разработчики поленились сделать кошерно.Пытливые умы же научились отправлять почту сторонним приложением.Качаем SMTP-клиент mailsendКладем его, допустим, сюда C:\Program Files (x86)\Dude\mailsend\mailsend.exe (не забудьте переименовать экзешник)Создаём файлик mailsend.cmd следующего содержания:  :: Send email notifications from Dude via Gmail:: set mailsenderdir=C:\Program Files (x86)\Dude\mailsendset mailsender=mailsend.exeset smtpsender=username@gmail.comset smtpsenderfullname=usernameset smtpserver=smtp.gmail.comset smtpport=465set smtpuser=username@gmail.comset smtppwd=passwordset mailto=username@gmail.com::::"%mailsenderdir%%mailsender%" -smtp %smtpserver% -port %smtpport% -ssl -auth -user %smtpuser% -pass %smtppwd% -t %mailto% -f %smtpsender% -name “%smtpsenderfullname%” +cc +bc -q -sub %1 -M %2::::pause::Эти параметры меняем на свои: smtpsender - ящик, с которого будут отправляться письма, smtpsenderfullname - имя пользователя этого ящика, smtpuser - опять ящик, smtppwd - пароль к нему, mailto - ящик админа (на который будем слать алерты)4. Создаем новое уведомление в The Dude:Имя: mailТип: execute on serverКоманда: “C:\Program Files (x86)\Dude\mailsend\mailsend.cmd” “Service [Probe.Name] on [Device.Name] is now [Service.Status]” “Service [Probe.Name] on [Device.Name] is now [Service.Status] ([Service.ProblemDescription])"После нажатия кнопки Test письмо должно упасть на почту.С почтой разобрались. Теперь нужно научить Дудку отправлять СМС. Саму мониторилку мы больше мучать не будем - СМС умеет отправлять гуглопочта.Итак, что нужно для начала: у вас должен быть привязан телефонный номер к Google Calendar, как это сделать написано вот тут — Регистрация мобильного телефона:support.google.com/calendar/bin/answer.py?hl=ru&hlrm=en&answer=45351Создайте новый ярлык в Gmail с именем, например, SMSnotify (или любым другим, по вашему усмотрению). Как это сделать написано вот тут – Использование ярлыков:support.google.com/mail/bin/answer.py?hl=ru&hlrm=ru&answer=118708#0Создайте фильтр, который будет применять ярлык SMSnotify к письмам от системы мониторинга ( From: username@gmail.com). Как это сделать, написано вот тут – Использование фильтров:support.google.com/mail/bin/answer.py?hl=ru&hlrm=ru&answer=6579#0Войдите в Google Drive и создайте новую электронную таблицу (Spreadsheet). Откройте созданную таблицу и в верхнем меню выберите Tools > Script Editor.Нужно создать доп. календарь и настроить SMS уведомления: установить по-умолчанию для всех новых встреч вот так:Настройки->Календари->Уведомления->По умолчанию->SMS->%% минВ этом примере имя календаря будет “email"Вставляем следующий код:function my_notification() { var calendar = CalendarApp.getOwnedCalendarsByName(‘email’)[0]; //открываем календарь с именем “email” var threads = GmailApp.getUserLabelByName(‘SMSnotify’).getThreads(); //переменная, в которой хранится коллекция цепочек с ярлыком SMSnotify var now = new Date(); if(threads == 0) return; // прекращение выполнения, если новых цепочек нет for(i in threads) // создаем события { calendar.createEvent(threads[i].getFirstMessageSubject(), new Date(now.getTime()+60000), new Date(now.getTime()+60000)); } GmailApp.getUserLabelByName(‘SMSnotify’).removeFromThreads(threads); //снимаем метки “SMSnotify” с цепочек}6.  После того, как вы ввели код, нужно создать триггер по которому и будет запускаться скрипт. Для этого кликаем на меню “Ресурсы”, а в нем на “Триггеры текущего скрипта”. 7.  Нам нужен time-driven триггер с частотой повторения одна минута.Этот скрипт будет проверять входящие от с ярлыком SMSnotify (от юзера username@gmail.com). И, в случае наличия новых писем создавать событие в календаре и снимать ярлык с уже обработанного письма. СМС будет слать сам календарь.Статья написана методом копипаста! Навеяно этим: отправка email уведомлений, отправка СМС из гуглопочты


Dude и SNMP

Про The Dude я уже писал. Отличная система мониторинга для сетей, построенных на базе оборудования Mikrotik. Столкнулся со следующей проблемой: хочу получить графики пропускной способности интерфейсов коммутаторов не строя при этом связи между портом коммутатора и конечным устройством на схеме (ну не надо мне перегружать карту клиентскими компами/телефонами). Что-то подобное Dude организовать может, но в ходе чтения различных материалов и обсуждений конкретного решения я не нашел и пришлось копать дальше в тему. Для нетерпеливых: ответа я пока не нашел.Итак, мы можем опросить устройство по SNMP и произвести какие-либо манипуляции с полученными данными средствами самой дудки. Стандартный SNMP позволяет нам увидеть следующие параметры:ifSpeed1.3.6.1.2.1.2.2.1.5Текущая скорость интерфейса в битах за секунду.ifInOctets1.3.6.1.2.1.2.2.1.10Полное число полученных байтов, включая символы заголовковifOutOctets1.3.6.1.2.1.2.2.1.16Полное количество отправленных октетов с интерфейса, включая символы заголовков.Сначала я думал, что первая строчка этой таблицы спасет меня. Но нет - она показывает скорость, в которую установлен интерфейс (10/100/1000 Мб/с). Соответственно, ковырять придется второй и третий параметры. Вычислить скорость, исходя из полученных данных можно так: (ifInOctets(time1) - ifInOctets(time2)) / (time2 - time1)Но вот проблема: куда записать текущее значение полученных байтов, чтобы потом вычесть одно из другого. Тут должны помочь функции, встроенные в Dude. Но использование переменных я в них не нашел. Поэтому откладываю эту задачку на неопределенное время. На форуме предлагают решение для The Dude 3.6, но в 4 версии оно не работает. Ссылки, которые дали информацию для размышлений: 1, 2, 3, 4, 5.