Приветствую!
Подскажите, как можно при регистрации клиента с определенным MAC в DHCP-сервере выполнять определенный скрипт? Допустим скрипт отправки сообщения на мыло или смс.
Может это можно делать и не через DHCP-сервер, я не знаю. Netwatch не катит, т.е. далеко не все клиентские хосты отвечают на пинги.
Если вкратце, то когда комп с маком 123 появился в сети, мне приходит мыло\sms с текстом "комп 123 онлайн". Соответственно, когда этот комп отконнектился, то пришло мыло\sms об уходе его в оффлайн.
Комп может быть как проводной,так и по wi-fi.
Отправка e-mail/sms про появлении в сети определенного хоста
- podarok66
- Модератор
- Сообщения: 4361
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Даже и не соображу сразу, где искать Можно попробовать просматривать таблицу ARP, в ее динамической части подсвечиваются подсоединенные компы.
Типа такого:
позволит нам определить IP-адрес устройства, если его выдает дхпц-сервер. Затем можно пропинговать устройство по найденному адресу и, если оно отвечает, то высылаем письмо и включаем другой скрипт, который по нашему адресу пингует устройство через назначенные промежутки времени и отключаем этот скрипт. Как только ответа на пинги, нет высылает соответствующее письмо и включает первый скрипт и выключает второй... Ну это очень приближенно, в итоге все можно решить значительно изящнее, я уверен. Нужно только посидеть и подумать.
Не знаю, как долго хранится запись в динамической части 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-таблицы, в это достаточно критично в данном варианте.
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
-
- Сообщения: 47
- Зарегистрирован: 12 дек 2014, 16:21
Ок, покумекаю над предложенным вариантом. Спасибо. Только вот пигн не катит, я же писал уже.
У самого идеи аж три - dhcp - lease script, т.е. там же можно скрипт запускать при выдаче сервреом IP. Но вот как это в скрипте-то описать, что, мол, если такому-то маку выдан IP, то сделать то-то.
Второй вариант также был просмотр в ARP.
Третий - смотреть лог на предмет появления мака и строк assigned и deassigned. Подобного плана етсь примеры в инете, но там тонны кода + какое-то доп. логггирование в память.
Самый простой вариант, как мне видится - выполнение скрипта в dhcp lease, но вот какого скрипта?
У самого идеи аж три - dhcp - lease script, т.е. там же можно скрипт запускать при выдаче сервреом IP. Но вот как это в скрипте-то описать, что, мол, если такому-то маку выдан IP, то сделать то-то.
Второй вариант также был просмотр в ARP.
Третий - смотреть лог на предмет появления мака и строк assigned и deassigned. Подобного плана етсь примеры в инете, но там тонны кода + какое-то доп. логггирование в память.
Самый простой вариант, как мне видится - выполнение скрипта в dhcp lease, но вот какого скрипта?
-
- Сообщения: 47
- Зарегистрирован: 12 дек 2014, 16:21
Вот пока такой вариант работает:
Вопрос такой - если это кинуть в шедулер и запускать раз в минуту, например, то каждую минуту будет сообщение - комп онлайн или комп оффлайн. Как сделать, чтобы проверялось каждую минуту, но сообщение в лог писалось только однажды - при первом появлении мака и при первом его пропадании? Так сделано в Netwatch.
Код: Выделить всё
:local y [/ip arp find mac-address=хх:хх:хх:хх:хх:хх];
:if ( $y!="") do={
:log warning "This comp online!";
} else {
:log warning "This comp offline!";
}
Вопрос такой - если это кинуть в шедулер и запускать раз в минуту, например, то каждую минуту будет сообщение - комп онлайн или комп оффлайн. Как сделать, чтобы проверялось каждую минуту, но сообщение в лог писалось только однажды - при первом появлении мака и при первом его пропадании? Так сделано в Netwatch.
- GDragon
- Сообщения: 80
- Зарегистрирован: 20 ноя 2014, 15:48
Добавить статическую переменную. Если комп онлайн - устанавливаем например 1
в скрипте проверяем переменную - если значения не совпадают - выполняем действие
в скрипте проверяем переменную - если значения не совпадают - выполняем действие
-
- Сообщения: 47
- Зарегистрирован: 12 дек 2014, 16:21
А в коде это как выглядит? Примерчик можно?
-
- Сообщения: 47
- Зарегистрирован: 12 дек 2014, 16:21
Порылся в скриптах, вроде понял как сделать переменную:
Код: Выделить всё
: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!";
}
- GDragon
- Сообщения: 80
- Зарегистрирован: 20 ноя 2014, 15:48
local - работает внутри скрипта, после отработки скрипта очищается
global - доступна всегда, в т.ч. между разными скриптами.
global - доступна всегда, в т.ч. между разными скриптами.
- podarok66
- Модератор
- Сообщения: 4361
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Да, поэтому переменную Status надо бы делать global, первой строкой выполнить проверку на наличие ее в системе вообще, в случае отсутствия присвоить ей какое-то значение и дальше по плану...
Как-то так мыслится издалека
Как-то так мыслится издалека
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
-
- Сообщения: 47
- Зарегистрирован: 12 дек 2014, 16:21
Ну можно в коде ваши мысли и советы? Тяжело сочинять все это без знания языков программирования....