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

[Решено]Автоматическое добавление хостов в dns

Добавлено: 18 дек 2014, 09:16
Senter
Собственно как? Есть группа mikrotik 951Ui, раздают адреса по dhcp, на клиентах настроены адекватные сетевые имена(латиница+цифры без доп. символов), необходимо автоматически присваивать им dns запись и удалять если хост не доступен сутки(хотя удаление это не самая важная задача). Встроенные средств не нашел, есть мысль использовать скрипт, но не нашел способ как сделать выборку записей ip dhcp-server leases get требует указания номеров записей(нельзя выбрать все и запрашивать из них необходимые значения).

Re: Автоматическое добавление хостов в dns

Добавлено: 22 дек 2014, 01:44
simpl3x
если еще актуально

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

foreach i in [/ip dhcp-server lease find] do [local hostname [/ip dhcp-server lease get $i host-name]; local ipaddr [/ip dhcp-server lease get $i active-address ]; put $hostname; put $ipaddr  ]

проходим по всему списку лизов, создаем локальные переменные hostname и ipaddr, а дальше делаем с ними что хотим.

читать тут: http://wiki.mikrotik.com/wiki/Manual:Scripting

Re: Автоматическое добавление хостов в dns

Добавлено: 25 дек 2014, 09:58
Senter
Спасибо, попробую

Получилось так, может кому еще пригодится:

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

:local exists
:local hostname
:local ipaddr
:local dom (".".[/system identity get name].".loc")

:foreach i in [/ip dhcp-server lease find dynamic=0] do={
   :set hostname ([/ip dhcp-server lease get $i host-name].$dom)
   :set ipaddr [/ip dhcp-server lease get $i active-address]
   :set exists 0   
   :foreach j in [/ip dns static find] do={
   :if ([/ip dns static get number=$j name]=$hostname) do={
         :set exists 1
         :if ([/ip dns static get $j address]!=$ipaddr) do={
            /ip dns static set number=$j address=$ipaddr
         }
      }
   }
   :if ($exists=0) do={
      /ip dns static add name=$hostname address=$ipaddr ttl="12:00:00"
   }   
}