Информация
Настройка
Новости
Контакты
Новинка
Распродажа
Оплата
Доставка
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Полезные скрипты

    Полезные скрипты

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Полезные скрипты, RouterOS
     
    janisk
    Guest
    #1
    0
    31.03.2010 05:43:00
    Я постараюсь собрать все полезные ссылки на темы, которые стоит посмотреть, когда нужен какой-то скрипт, которого ещё нет в вики или который там есть, чтобы они не затерялись среди кучи других постов. Обращайте внимание на дату публикации, чтобы понять, к какой версии RouterOS относятся эти материалы.

    Функции статистики IP Pool в CMD-скриптах  
    Воссоздание правил балансировки нагрузки с помощью mangle  
    Экспорт настроек беспроводной сети с пропуском некоторых параметров
     
     
     
    janisk
    Guest
    #2
    0
    28.03.2012 07:20:00
    У всех RouterOS это есть. В CLI — /system script edit <script-name> source
     
     
     
    janisk
    Guest
    #3
    0
    05.01.2012 10:26:00
    В таком случае воспользуйся редактором скриптов CLI (внутри RouterOS) и редактируй скрипт там. Большинство изменений в синтаксисе можно будет заметить именно там. Нажми F5, чтобы обновить подсветку.
     
     
     
    namo
    Guest
    #4
    0
    14.12.2010 03:10:00
    Спасибо, Janisk. Также полезно указать версию RouterOS, с которой работает скрипт, потому что иногда я натыкаюсь на старые скрипты для версии 2.9, и они не работают с версией 4.14.
     
     
     
    angboontiong
    Guest
    #5
    0
    17.03.2012 11:42:00
    Все версии имеют этот редактор? Где он находится? Спасибо.
     
     
     
    Nima1394
    Guest
    #6
    0
    19.06.2012 09:33:00
    Привет, ребята! Почему этот скрипт не работает?! set[/ip route find dst 0.0.0.0] gateway 10.0.0.1 — эта команда упоминается в wiki.mikrotik: http://wiki.mikrotik.com/wiki/Manual:Tools/Netwatch. После ввода команды ничего не происходит, и маршрут по умолчанию не меняется. Я хочу написать скрипт, который изменит шлюз маршрута по умолчанию.
     
     
     
    rdc
    Guest
    #7
    0
    09.01.2013 10:50:00
    Не знаю, куда бы это запостить, но, пожалуй, это лучшее место для этого. По сути, что делает скрипт: он проверяет динамические аренды на моём DHCP-сервере, берёт их MAC-адреса и сверяет их с фильтром фаервола. Если MAC нет в фильтре — добавляет его и блокирует весь трафик с этих адресов. Я использую это, чтобы не давать пользователям халявно пользоваться моим интернетом, особенно когда им от знакомых достаётся мой Wi-Fi ключ.

    Ниже скрипт, протестированный на версии 2.9.x:

    :foreach i in=[/ip dhcp-server lease find dynamic=yes] do={
      :set dynamicMAC [/ip dhcp-server lease get $i mac-address];
      :set dynamicHOST [/ip dhcp-server lease get $i host-name];
      :set macfound [/ip firewall filter find src-mac-address=$dynamicMAC];

       :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. " в фильтр фаервола")
       }
    }

    Ниже код, проверенный на версии 5.19:

    :foreach i in=[/ip dhcp-server lease find dynamic] do={
      :local dynamicMAC [/ip dhcp-server lease get $i mac-address];
      :local dynamicHOST [/ip dhcp-server lease get $i host-name];
      :local macfound [/ip firewall filter find src-mac-address=$dynamicMAC];

       :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
    #8
    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;

    Загрузка системного бэкапа на внешний FTP:
    /tool fetch address=192.168.1.1 port=21 src-path=micro-sd/exportSy.rsc upload=yes user=FTPuser mode=ftp password=“FTPpassword” dst-path=$exportname;
    /tool fetch address=192.168.1.1 port=21 src-path=micro-sd/backupUM.umb upload=yes user=FTPuser mode=ftp password=“FTPpassword” dst-path=$UMname;
    /file remove micro-sd/backupUM.umb;
    /file remove micro-sd/exportSy.rsc;
    log info message=System_Export_uploaded;

    Вместо “192.168.1.1” нужно указать адрес вашего FTP-сервера, а также ваш логин и пароль для FTP.

    Вдохновлялся вот этим постом: http://forum.mikrotik.com/t/backup-to-external-ftp-useful-script/47659/1 Надеюсь, кому-то пригодится.

    Работает на RouterOS 6.2.
     
     
     
    nurmia
    Guest
    #9
    0
    10.11.2013 08:50:00
    Спасибо, Janisk, за хорошую информацию. Твой пост мне очень помог.
     
     
     
    rextended
    Guest
    #10
    0
    19.03.2014 20:25:00
    Открываю новую тему для моего скрипта: Проверка заблокированных подключений PPPOE, PPTP, L2TP, SSTP, OVPN и PPP http://forum.mikrotik.com/t/check-locked-pppoe-pptp-l2tp-sstp-ovpn-ppp-connections/75396/1
     
     
     
    rextended
    Guest
    #11
    0
    25.03.2014 21:13:00
    Я открываю новую тему для своего скрипта: Как действительно заблокировать неверные TCP и UDP пакеты http://forum.mikrotik.com/t/for-isp-how-to-really-block-invalid-icmp-tcp-udp-packets-and-others-ver-2021/75627/1
     
     
     
    cdiedrich
    Guest
    #12
    0
    29.04.2014 08:26:00
    Вот скрипт, который я только что написал для централизованного массового обновления новых (бета) прошивок в нашей беспроводной системе под управлением CAPsMAN:

    /system script add name=pushupdate policy=ftp,read,write,policy,test,winbox,password,sniff,sensitive,api source=" :foreach i in=[/ip firewall address-list find list=accesspoints] do={ [/tool fetch address=[/ip firewall address-list get $i address] mode=ftp user=login password=password src-path=updates/wireless-fp-6.13rc7-mipsbe.npk dst-path=wireless-fp-6.13rc7-mipsbe.npk upload=yes]; [/tool fetch address=[/ip firewall address-list get $i address] mode=ftp user=login password=password src-path=updates/routeros-mipsbe-6.13rc7.npk dst-path=routeros-mipsbe-6.13rc7.npk upload=yes]; [/tool fetch address=[/ip firewall address-list get $i address] mode=ftp user=login password=password src-path=updates/reboot.rsc dst-path=reboot.auto.rsc upload=yes]; }

    У меня все точки доступа внесены в адресный список “accesspoints”. Имена файлов прописаны жёстко специально, чтобы проще отслеживать версии.

    Скрипт reboot.rsc выглядит так:  
    :file remove reboot.auto.rsc  
    :log warning “Инициация обновления прошивки”  
    :delay 1s  
    :system reboot

    (Предупреждения и ошибки записываются на диск, всё остальное — только в память, поэтому я вывожу предупреждение.)

    Если что-то пойдёт не так, у меня есть скрипт отката с версией 6.12. Тогда скрипт перезагрузки вызывает /system package downgrade вместо reboot.

    Может, кому-то пригодится.  
    Удачи!  
    Крис
     
     
     
    plisken
    Guest
    #13
    0
    10.05.2014 10:04:00
    Где и как можно задать список зарегистрированных пользователей?
     
     
     
    rextended
    Guest
    #14
    0
    10.05.2014 14:00:00
    Добавьте устройства вручную в список DHCP-аренды…
     
     
     
    IntrusDave
    Guest
    #15
    0
    24.07.2015 07:41:00
    Скрипт для загрузки актуального списка адресов в черный список, чтобы блокировать известные ботнеты, спамеров, мошенников и серверы управления и контроля (C&C). http://forum.mikrotik.com/t/blacklist-filter-update-script/89817/1
     
     
     
    Cha0s
    Guest
    #16
    0
    13.08.2015 16:00:00
    Скрипт для отправки уведомлений на несколько электронных адресов по нескольким BGP-пирами, если их статус не «установлен» http://forum.mikrotik.com/t/email-me-if-bgp-session-status-in-not-established/58669/15
     
     
     
    gammy69er
    Guest
    #17
    0
    14.08.2015 04:16:00
    Только что добавил скрипт для ограничения данных в Hotspot http://forum.mikrotik.com/t/hotspot-data-limits/90475/1. Устанавливает лимит данных при входе — не требует постоянного мониторинга скриптом — и отключает пользователя, когда данные исчерпаны.
     
     
     
    favincen
    Guest
    #18
    0
    28.08.2015 11:00:00
    Имейте в виду, что это не сработает, если ваш скрипт больше 4 Кб! (См. этот пост). Так что это работает только с небольшими скриптами…
     
     
     
    jfrawley
    Guest
    #19
    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
    #20
    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}

    Укажи свой email в следующей строке:  
    :if ($voltage <= $lowvoltalarm) do={/tool e-mail send to="test@test.com" subject="$thisbox Voltage Statistics" body=$emessage}  
    :if ($voltage >= $highvoltalarm) do={/tool e-mail send to="test@test.com" subject="$thisbox Voltage Statistics" 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 = "23") do={:execute voltreport}  

    Я запускаю этот скрипт каждые 30 минут. Кто-нибудь может объяснить, почему он больше не работает на версиях выше 6.30? Спасибо.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры