Страница 1 из 7

Отправка e-mail/sms про появлении в сети определенного хоста

Добавлено: 24 фев 2015, 21:17
V palto
Приветствую!
Подскажите, как можно при регистрации клиента с определенным MAC в DHCP-сервере выполнять определенный скрипт? Допустим скрипт отправки сообщения на мыло или смс.
Может это можно делать и не через DHCP-сервер, я не знаю. Netwatch не катит, т.е. далеко не все клиентские хосты отвечают на пинги.

Если вкратце, то когда комп с маком 123 появился в сети, мне приходит мыло\sms с текстом "комп 123 онлайн". Соответственно, когда этот комп отконнектился, то пришло мыло\sms об уходе его в оффлайн.
Комп может быть как проводной,так и по wi-fi.

Re: Отправка e-mail/sms про появлении в сети определенного х

Добавлено: 25 фев 2015, 19:59
podarok66
Даже и не соображу сразу, где искать :-) Можно попробовать просматривать таблицу ARP, в ее динамической части подсвечиваются подсоединенные компы.
Типа такого:

Код: Выделить всё

 {:local y [/ip arp find mac-address=XX:XX:XX:XX:XX:XX]; 
:if ( $y!="") do={:put [/ip arp get $y address]} else={put "fac"}}

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

Re: Отправка e-mail/sms про появлении в сети определенного х

Добавлено: 25 фев 2015, 20:35
V palto
Ок, покумекаю над предложенным вариантом. Спасибо. Только вот пигн не катит, я же писал уже.
У самого идеи аж три - dhcp - lease script, т.е. там же можно скрипт запускать при выдаче сервреом IP. Но вот как это в скрипте-то описать, что, мол, если такому-то маку выдан IP, то сделать то-то.
Второй вариант также был просмотр в ARP.
Третий - смотреть лог на предмет появления мака и строк assigned и deassigned. Подобного плана етсь примеры в инете, но там тонны кода + какое-то доп. логггирование в память.

Самый простой вариант, как мне видится - выполнение скрипта в dhcp lease, но вот какого скрипта?

Re: Отправка e-mail/sms про появлении в сети определенного х

Добавлено: 25 фев 2015, 21:09
V palto
Вот пока такой вариант работает:

Код: Выделить всё

:local y [/ip arp find mac-address=хх:хх:хх:хх:хх:хх];
:if ( $y!="") do={
                     :log warning "This comp online!";
                  } else {
                     :log warning "This comp offline!";
                   }


Вопрос такой - если это кинуть в шедулер и запускать раз в минуту, например, то каждую минуту будет сообщение - комп онлайн или комп оффлайн. Как сделать, чтобы проверялось каждую минуту, но сообщение в лог писалось только однажды - при первом появлении мака и при первом его пропадании? Так сделано в Netwatch.

Re: Отправка e-mail/sms про появлении в сети определенного х

Добавлено: 26 фев 2015, 13:07
GDragon
Добавить статическую переменную. Если комп онлайн - устанавливаем например 1
в скрипте проверяем переменную - если значения не совпадают - выполняем действие

Re: Отправка e-mail/sms про появлении в сети определенного х

Добавлено: 26 фев 2015, 17:31
V palto
А в коде это как выглядит? Примерчик можно?

Re: Отправка e-mail/sms про появлении в сети определенного х

Добавлено: 27 фев 2015, 07:29
V palto
Порылся в скриптах, вроде понял как сделать переменную:

Код: Выделить всё

:local Status 0;
:local y [/ip arp find mac-address=хх:хх:хх:хх:хх:хх];
:if ( $y!="") do={
                      :set Status 1; 
                  } else {
                     :set Status 0;
                   }
:if ($Status=1) do={
                     :log warning "This comp online!";
                      } else {
                     :log warning "This comp offline!";
                      }

Re: Отправка e-mail/sms про появлении в сети определенного х

Добавлено: 27 фев 2015, 10:28
GDragon
local - работает внутри скрипта, после отработки скрипта очищается
global - доступна всегда, в т.ч. между разными скриптами.

Re: Отправка e-mail/sms про появлении в сети определенного х

Добавлено: 27 фев 2015, 11:39
podarok66
Да, поэтому переменную Status надо бы делать global, первой строкой выполнить проверку на наличие ее в системе вообще, в случае отсутствия присвоить ей какое-то значение и дальше по плану...
Как-то так мыслится издалека :-):

Re: Отправка e-mail/sms про появлении в сети определенного х

Добавлено: 27 фев 2015, 15:43
V palto
Ну можно в коде ваши мысли и советы? Тяжело сочинять все это без знания языков программирования....