Я постараюсь собрать все полезные ссылки на темы, которые стоит посмотреть, когда нужен какой-то скрипт, которого ещё нет в вики или который там есть, чтобы они не затерялись среди кучи других постов. Обращайте внимание на дату публикации, чтобы понять, к какой версии RouterOS относятся эти материалы.
Функции статистики IP Pool в CMD-скриптах Воссоздание правил балансировки нагрузки с помощью mangle Экспорт настроек беспроводной сети с пропуском некоторых параметров
janisk
Guest
0
28.03.2012 07:20:00
У всех RouterOS это есть. В CLI — /system script edit <script-name> source
janisk
Guest
0
05.01.2012 10:26:00
В таком случае воспользуйся редактором скриптов CLI (внутри RouterOS) и редактируй скрипт там. Большинство изменений в синтаксисе можно будет заметить именно там. Нажми F5, чтобы обновить подсветку.
namo
Guest
0
14.12.2010 03:10:00
Спасибо, Janisk. Также полезно указать версию RouterOS, с которой работает скрипт, потому что иногда я натыкаюсь на старые скрипты для версии 2.9, и они не работают с версией 4.14.
angboontiong
Guest
0
17.03.2012 11:42:00
Все версии имеют этот редактор? Где он находится? Спасибо.
Nima1394
Guest
0
19.06.2012 09:33:00
Привет, ребята! Почему этот скрипт не работает?! set[/ip route find dst 0.0.0.0] gateway 10.0.0.1 — эта команда упоминается в wiki.mikrotik: . После ввода команды ничего не происходит, и маршрут по умолчанию не меняется. Я хочу написать скрипт, который изменит шлюз маршрута по умолчанию.
rdc
Guest
0
09.01.2013 10:50:00
Не знаю, куда бы это запостить, но, пожалуй, это лучшее место для этого. По сути, что делает скрипт: он проверяет динамические аренды на моём DHCP-сервере, берёт их MAC-адреса и сверяет их с фильтром фаервола. Если MAC нет в фильтре — добавляет его и блокирует весь трафик с этих адресов. Я использую это, чтобы не давать пользователям халявно пользоваться моим интернетом, особенно когда им от знакомых достаётся мой Wi-Fi ключ.
:if ($macfound != "") do={ :log info ($dynamicMAC. " уже в фильтре") } else= { /ip firewall filter add chain=forward src-mac-address=$dynamicMAC action=drop comment=($dynamicHOST . " - " . $dynamicMAC . " Незарегистрированное устройство") :log info ("Добавил " . $dynamicMAC. " в фильтр фаервола") } }
Удачи!
solelunauno
Guest
0
23.08.2013 09:55:00
Привет! Я создал простой скрипт для ежедневного резервного копирования настроек роутера и базы данных usermanager, используя SD-карту как буфер, чтобы уменьшить износ флеш-памяти роутера. Это особенно полезно, если планируешь увеличить базу usermanager до размеров в гигабайты — тогда бэкап на встроенной памяти уже не получится. Также планирую написать отдельный скрипт, который каждую неделю будет “перестраивать” базу и логи, чтобы уменьшить размер резервных копий.
Этот скрипт всегда удаляет одни и те же два файла, чтобы в FTP всегда оставалась последняя актуальная версия.
#автоматизация System: log info message=System_Export_started; local exportname ([/system identity get name].“.rsc”); local UMname ([/system identity get name].“.umb”); export compact file=micro-sd/exportSy.rsc; /tool user-manager database save name=micro-sd/backupUM.umb; log info message=System_Export_finished;
Вместо “192.168.1.1” нужно указать адрес вашего FTP-сервера, а также ваш логин и пароль для FTP.
Вдохновлялся вот этим постом: Надеюсь, кому-то пригодится.
Работает на RouterOS 6.2.
nurmia
Guest
0
10.11.2013 08:50:00
Спасибо, Janisk, за хорошую информацию. Твой пост мне очень помог.
rextended
Guest
0
19.03.2014 20:25:00
Открываю новую тему для моего скрипта: Проверка заблокированных подключений PPPOE, PPTP, L2TP, SSTP, OVPN и PPP
rextended
Guest
0
25.03.2014 21:13:00
Я открываю новую тему для своего скрипта: Как действительно заблокировать неверные TCP и UDP пакеты
cdiedrich
Guest
0
29.04.2014 08:26:00
Вот скрипт, который я только что написал для централизованного массового обновления новых (бета) прошивок в нашей беспроводной системе под управлением CAPsMAN:
(Предупреждения и ошибки записываются на диск, всё остальное — только в память, поэтому я вывожу предупреждение.)
Если что-то пойдёт не так, у меня есть скрипт отката с версией 6.12. Тогда скрипт перезагрузки вызывает /system package downgrade вместо reboot.
Может, кому-то пригодится. Удачи! Крис
plisken
Guest
0
10.05.2014 10:04:00
Где и как можно задать список зарегистрированных пользователей?
rextended
Guest
0
10.05.2014 14:00:00
Добавьте устройства вручную в список DHCP-аренды…
IntrusDave
Guest
0
24.07.2015 07:41:00
Скрипт для загрузки актуального списка адресов в черный список, чтобы блокировать известные ботнеты, спамеров, мошенников и серверы управления и контроля (C&C).
Cha0s
Guest
0
13.08.2015 16:00:00
Скрипт для отправки уведомлений на несколько электронных адресов по нескольким BGP-пирами, если их статус не «установлен»
gammy69er
Guest
0
14.08.2015 04:16:00
Только что добавил скрипт для ограничения данных в Hotspot . Устанавливает лимит данных при входе — не требует постоянного мониторинга скриптом — и отключает пользователя, когда данные исчерпаны.
favincen
Guest
0
28.08.2015 11:00:00
Имейте в виду, что это не сработает, если ваш скрипт больше 4 Кб! (См. этот пост). Так что это работает только с небольшими скриптами…
jfrawley
Guest
0
10.01.2016 19:26:00
Ищу способ отредактировать мой скрипт отчёта по напряжению. Сейчас он настроен на отправку письма с отчётом ежедневно в 23:00, хочу изменить на 8:00, но при этом получаю отрицательные значения часов, например -1, -2, -3 и так далее. Я сделал две правки и посмотрю, что будет завтра, но если кто-то знает простой способ исправить — дайте знать. Ниже скрипт, который я использовал с сайта (два скрипта). Я не очень разбираюсь в скриптах, но стараюсь разобраться, просто хочу получать отчёты в 8 утра вместо 11 вечера. В строке ниже изменил 23 - $x на 08 + $x в надежде получить положительные числа:
global highvolt global lowvolt global hivolttime global lovolttime global starttime global vh local tvolt local thisbox [/system identity get name] local thisdate [/system clock get date] local thishour local emessage “Ежедневный отчёт по напряжению для $thisbox за $thisdate\n\n” if ([:len $vh] > 0) do={ for x from=0 to=([:len $vh]-1) step=1 do={ set tvolt [:tostr [:pick $vh $x]] set thishour [:tostr (08 + $x)] while ([:len $thishour] < 2) do={set thishour (“0” . $thishour)} set emessage ($emessage . $thishour . ":00 = " . [:pick $tvolt 0 2] . “.” . [:pick $tvolt 2 3] . “\n”) } set emessage ($emessage . "\nС момента запуска VoltMonitor " . $starttime . “\n”) set tvolt [:tostr $highvolt] set emessage ($emessage . "Максимум = " . [:pick $tvolt 0 2] . “.” . [:pick $tvolt 2 3] . " В в " . $hivolttime . “\n”) set tvolt [:tostr $lowvolt] set emessage ($emessage . "Минимум = " . [:pick $tvolt 0 2] . “.” . [:pick $tvolt 2 3] . " В в " . $lovolttime . “\n”) set email address in next line /tool e-mail send to=“myemail” subject=“$thisbox Voltage Report” body=$emessage } remark out the next line for testing to avoid resetting the voltage array :set vh
########################################################################## Volt monitor script — я изменил строку ниже, чтобы запускать отчёт не в 23 часа, а в 8 утра #set lowvoltalarm значение тревоги по напряжению в десятых частей вольта. 118 = 11.8v # +015 это компенсация для реального напряжения. global lowvoltalarm 225 global highvolt global lowvolt global starttime global hivolttime global lovolttime global vh local thisbox [/system identity get name] global voltage ([/system health get voltage] + 015) local thistime [/system clock get time] local thisdate [/system clock get date] local thishour [:pick $thistime 0 2] local emessage ($thisbox . " напряжение " . [:pick $voltage 0 2] . “.” . [:pick $voltage 2 3]) if ([:len $lowvolt] < 1) do={set lowvolt 999; set highvolt 0} if ($voltage <= $lowvoltalarm) do={/tool e-mail send to=“mycelltext” subject=“$thisbox низкое напряжение” body=$emessage} if ($voltage <= $lowvoltalarm) do={/tool e-mail send to=“hiscelltext” subject=“$thisbox низкое напряжение” body=$emessage} if ($voltage > $highvolt) do={set highvolt $voltage; set hivolttime ($thistime . " " . $thisdate)} if ($voltage < $lowvolt) do={set lowvolt $voltage; set lovolttime ($thistime . " " . $thisdate)} if ([:len $vh] > 0) do={set vh ([:toarray $voltage] + $vh)} else={set vh [:toarray $voltage]} if ([:len $starttime] < 1) do={set starttime ($thistime . " " . $thisdate)} if ($thishour = “08”) do={execute voltreport}
Trezona
Guest
0
21.01.2016 11:08:00
Привет, jfrawley, Тебе удалось запустить свой скрипт мониторинга напряжения на версии 6.33.5? У меня тоже есть похожий скрипт мониторинга напряжения, он отлично работает на 6.29, но никак не запускается на версиях выше 6.30... Вот мой скрипт:
#set lowvoltalarm на желаемое напряжение тревоги в десятых долях вольта. 125 = 12.5v :global lowvoltalarm 200 :global highvoltalarm 280 :global highvolt :global lowvolt :global starttime :global hivolttime :global lovolttime :global vh :local thisbox [/system identity get name] :global voltage [/system health get voltage] :local thistime [/system clock get time] :local thisdate [/system clock get date] :local thishour [:pick $thistime 0 2] :local emessage ($thisbox . " voltage is: " . [:pick $voltage 0 2] . "." . [:pick $voltage 2 3]) :if ([:len $lowvolt] < 1) do={:set lowvolt 999; :set highvolt 0}