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

Leases comment в логе ROS

Добавлено: 06 июн 2020, 12:25
denis1978
Здравствуйте! Помогите, плз, решить такой вопрос.

В dhcp leases имеем около сотни записей. Все они Make Static и имеют уникальные comment.
При выдаче адреса dhcp сервером, в логе ROS появляется запись вида:

dhcp assigned IP xxx.xxx.xxx.xxx to MAC xx:xx:xx:xx:xx:xx
dhcp deassigned IP xxx.xxx.xxx.xxx from MAC xx:xx:xx:xx:xx:xx

Как сделать, чтобы помимо IP и MAC в логе было видно comment прописанный в lease?
Понимаю, что должен быть скрипт в Lease Script, но все попытки к успеху не привели.
В логе появляется пустая строка script,info.

RB3011, ROS 6.47

Re: Leases comment в логе ROS

Добавлено: 09 июн 2020, 22:31
Sertik
Как то криво написано, но вот так работает, как Вы хотели с печатью комментария от хоста в лог, попробуйте:

Вставьте в /dhcp-server script

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

:if ($leaseBound = "1") do={
/ip dhcp-server lease 
:log info ("Device: ". "$[get [find active-mac-address=$leaseActMAC] host-name] ". "$[get [find active-mac-address=$leaseActMAC] comment]"."  was given an address "."$[get [find active-mac-address=$leaseActMAC] address]")
}

Re: Leases comment в логе ROS

Добавлено: 09 июн 2020, 23:50
Sertik
Или так:

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

:if ($leaseBound = 1) do={
/ip dhcp lease
:log info ("This is "."$[get [find address=$leaseActIP] comment] "."$[get [find address=$leaseActIP] host-name]")
}
После в Вашем логе
dhcp assigned IP xxx.xxx.xxx.xxx to MAC xx:xx:xx:xx:xx:xx
появится
This is "коммент устройства получившего IP и его имя"

Так будет ясно кто получил адрес от DHCP-сервера.

Почему не работает просто:

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

:log info "$[get $leaseComment]"
не знаю. Вероятно comment устройства относится к вкладке lease, но хранится фиг знает где и не попадает во внутреннюю переменную вкладки $leaseComment - Микротиковцы не сделали.
При попытке /ip dhcp lease get comment мы должны указать чей comment мы хотим получить, ведь в лизе много устройств. Можно получить комментарии всех устройств циклом :foreach типа так:
:foreach i in=[/ip dhcp-server lease find] do={:local Leasecomment [/ip dhcp-server lease get $i comment];} по идентификатору, но зачем они нам все ? нам то нужен коммент подключившегося клиента ...
Ну не писать же в самом деле /ip dhcp-server lease get [find comment=$leaseComment] comment, тем более что всё равно работать не будет.

Кстати при dhcp deassigned IP xxx.xxx.xxx.xxx from MAC xx:xx:xx:xx:xx:xx
уже проблема получить данные коммент и имени хоста отключившегося устройства, так как они уже не Activ. У меня пока не получилось, хотя было бы целесообразно при dhcp deassigned IP xxx.xxx.xxx.xxx from MAC xx:xx:xx:xx:xx:xx также выдать в лог кто потерял адрес ...

Может знатоки что подскажут, что я один то мучаюсь ?

Re: Leases comment в логе ROS

Добавлено: 10 июн 2020, 11:18
Sertik
Знатоки налетайте ! Podarok66 предлагаю перенести топик в раздел Скрипты.

Сделано! С уважением, podarok66

Re: Leases comment в логе ROS

Добавлено: 10 июн 2020, 11:19
denis1978
Спасибо Вам огромное! Ваш вариант работает.
Я уже голову сломал с $leaseComment.


Да при отключении не работает.

Re: Leases comment в логе ROS

Добавлено: 10 июн 2020, 11:50
Sertik
Вот тут

https://wiki.mikrotik.com/wiki/Manual:I ... er#General

четко сказано, какие глобальные переменные доступны в lease-script:
Script that will be executed after lease is assigned or de-assigned. Internal "global" variables that can be used in the script:

leaseBound - set to "1" if bound, otherwise set to "0"
leaseServerName - dhcp server name
leaseActMAC - active mac address
leaseActIP - active IP address
lease-hostname - client hostname
lease-options - array of received options
Во-первых ясно что $leaseComment там нет. Комментарий хранится в другом месте.
Как только $leaseBound становится =0 (клиент перестает быть клиентом DHCP-сервера, все другие переменные из списка выше вероятно становятся не доступны.
По какому тогда признаку получать comment отключившегося клиента ? Можно попробовать по Маку (если запомнить leaseActMAC заранее при подключении в какую-нибудь свою переменную. Попробуем ...