Некоторые сведения о скриптах RouterOS
Скрипты находятся в меню System/Scripts
Для того чтобы скрипт нормально отрабатывал (а я столкнулся с неработоспособностью встроенной программы fetch, т.к. подразумевал, что я что-то делаю не так, начал искать и нашёл правило - установить флаги Policy - READ,WRITE,TEST,POLICY.
NOTE: В расписании запуска скрипта тоже надо их установить - READ, WRITE, TEST, POLICY
Скрипты не понимают русского языка, так что всё на английском.
Итак, "парочка" скриптов.
Wifi ON/OFF
Скрипт отключения wifi точки доступа по расписанию.
wifi-ap - это имя (name) беспроводного интерфейса у меня (я его переименовал).
# Script for disable wifi-ap at night
# Node: mikrotik RB951G-2HnD
# Date: 09.01.2014
/interface disable wifi-ap
:log info "wifi sleep at night"
Соответственно включения:
# Script to enable wifi-ap access at morning
# Node: mikrotik RB951G-2HnD
/interface enable wifi-ap
:log info "wifi enabled to day work"
И задать в расписании их запуск когда надо. Не забыть про флаги.
※※※
Dynamic DNS updates
Как я выяснил в результате изысканий, достаточно выполнить следующую команду и сервер сам определить IP и если всё в порядке то обновит записи DNS.
Обвязку (вывод сообщений в логи) можно самому себе придумать как хочется.
Пример для www.dyndns.org
/tool fetch user=myusername password=mypassword \
url="http://members.dyndns.org/nic/update\?hostname=myfqdnname" \ dst-path="/dyndns.reply"
NOTE: DynDNS похоже стал платным и удаляет привязки как ему хочется, а посему ...
Следующий пример для twodns.de
Немножко по другому написан, чтобы показать возможности использования переменных
:local myusername "myusername"
:local mypassword "mypassword"
:local fqdnname "myfqdnname"
/tool fetch keep-result=no user="$myusername" password="$mypassword" url="http://update.two-dns.de/nic/update\?hostname=$fqdnname"
NOTE: Заметьте, что используется символ \ для снятия специального значения у вопросика (вопрос в консоли выводит список команд доступных в меню).
В принципе, всё. Это работает. Можно установить обновление через пару-тройку часов и забыть. А можно сделать обвязку, которая проверяет доступность интерфейсов, текущее значение IP и пр.
Вот например, получение адреса с маской, отбрасывание маски и установка переменной с текущим значение внешнего IPv4-адреса
# mywan - my wan interface name
:local wan "mywan"
:local wanip [ /ip address get [/ip address find interface=$wan ] address ]
:local wanip [:pick $wanip 0 [:find $wanip "/"]]
:log info "Wan IPv4 address is $wanip"
Вот получение преобразованного DNS-имени в IP от DNS-серверов, пишется в скриптах.
:log info ("DynDNS: Previous resolved FQDN name $myfqdnname" . [:resolve "$myfqdnname"])
или в переменную
:local dnsip [:resolve "$myfqdnname"]
Если писать в консоли ssh, то можно так смотреть для пошаговой отладки:
:put [:resolve "$myfqdnname"]
а потом в скриптах заменять на переменные.
Это всё потому, что отладка скриптов на микротике дело запутанное.
Условие можно написать так:
:if (wanip != dnsip) do={
} else={
}
В условии if, do= и else= так и пишутся без пробелов. Да и в циклах.
NOTE: Все спец.инструкции скриптового языка начинаются с символа : .
※※※
Sheduler - Расписание
При задании интервала в 1 день в расписании, через Web-интерфейс, интервал надо указывать в формате 1d 00:00:00
либо воспользоваться консолью:
[admin@MikroTik] /system scheduler> set [find name=wifidayup] interval 1d
※※※
Netwatch
При настроенной электронной почте (/tool e-mail), появляется возможность отправки событий от Сетевого наблюдателя - Netwatch (/tool netwatch).
Все сообщения на английском, т.к. у Mikrotik трудности с кодировками.
Наблюдая за состоянием IP-адреса (например IP камеры), netwatch вызывает события при первой доступности камеры, а также при первой недоступности и соотв. при смене состояния.
Надо заполнить поля On Up и On Down простейшим скриптом.
/tool e-mail send to=my@mail.ru subject="IP Camera 1 up" body="Netwatch say IP Camera 1 up and running"
On Down:
/tool e-mail send to=my@mail.ru subject="IP Camera 1 down" body="Netwatch say IP Camera unreachable"
※※※
PPtP и динамическое имя домашнего роутера
Основная проблема с подъёмом туннеля на Микротик - это отсутствие встроенной функции преобразования имён. Всё сделано на чистых IP-адресах.
Если домашний роутер имеет динамический IP-адрес, который часто меняется, то для того чтобы PPtP-клиент мог автоматически подключаться после изменений адреса, можно приделать такой скрипт, который выясняет изменения IP-адреса домашнего роутера и если было изменение - то выполняет обновление поля Connect-to у PPtP-интерфейса на клиенте (другой роутер). Это простой скрипт, без проверок, чтобы было понятно куда двигаться дальше. А сбои могут быть разные, вплоть до получения текста в значениях переменных.
Чтобы улучшить - надо устраивать проверки.
# Script to update a Connect-to IP address of home router in PPtP tunnel
# Host: router, Mikrotik
# Date: 13.01.2015
# author: Dmitriy for site gimmor.blogspot.com
# defint FQDN of home router
:local homehost "my.dynamic.name"
# define PPtP-interface (copy "name" from "Interfaces" section of pptp-client)
:local tunnelinterface "pptp-to-home"
:local ddnsip [:resolve $homehost ]
:log info ("ddns IP: $ddnsip.")
:local connectto [/interface pptp-client get [/interface pptp-client find name=$tunnelinterface ] connect-to]
:log info ("local Connect-to IP: $connectto.")
:if ($connectto != $ddnsip) do={
:log info ("ddns IP: $ddnsip.")
:log info ("local Connect-to IP: $connectto.")
[ /interface pptp-client set [/interface pptp-client find name=$tunnelinterface ] connect-to=$ddnsip ]
:log info ("Connect-to Done!")
} else={
:log info "NO tunnel's connect-to IP address update needed! host $homehost bind to address $ddnsip"
}
Если скрипт не работает, надо его протестировать построчно добавляя в систему.
※※※
Мониторинг питания Микротика
При наличии встроенных датчиков питания и температуры (например в Routerboard RB912UAG-2HPnD) можно осуществить просмотр значений напряжения и температуры:
:put [/system health get voltage]
:put [/system health get temperaute]
Значение напряжения, да и температуры возвращается в виде 3 цифр, без десятичной точки.
Если Микротик запитан от батарейного источника питания, то падение напряжения можно отследить и уведомить пользователя-администратора.
※※※
Ресурсы
1. http://wiki.mikrotik.com/wiki/Scripts
2. http://dyn.com/support/developers/api/perform-update/
3. http://aacable.wordpress.com/tag/mikrotik/
※※※
※
Комментариев нет:
Отправить комментарий