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

Обсуждение ПО и его настройки
Ответить
Senter
Сообщения: 98
Зарегистрирован: 25 ноя 2014, 12:27

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


Аватара пользователя
simpl3x
Модератор
Сообщения: 1532
Зарегистрирован: 19 апр 2012, 14:03

если еще актуально

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

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


Senter
Сообщения: 98
Зарегистрирован: 25 ноя 2014, 12:27

Спасибо, попробую

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

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

: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"
   }   
}


Ответить