Обновлено: 05.03.2026

Скрипты RouterOS

СкриптыАвтоматизацияScheduler

Основы скриптинга

RouterOS Scripting Language — встроенный язык для автоматизации задач. В RouterOS 7 синтаксис CLI изменён: пути разделяются символом / вместо пробела.

RouterOS 6RouterOS 7
/ip address print/ip/address/print
/interface ethernet set ether1/interface/ethernet/set ether1
/system script run/system/script/run

Переменные и типы данных

# Локальные переменные
:local myName "gw-office"
:local myIP 192.168.88.1
:local isEnabled true
:local counter 0

# Глобальные переменные (доступны между скриптами)
:global lastBackupDate

# Массивы
:local ports {"ether1";"ether2";"ether3"}

# Цикл foreach
:foreach port in=$ports do={
    :put "Processing $port"
}

# Условия
:if ($counter > 10) do={
    :put "Counter exceeded"
} else={
    :set counter ($counter + 1)
}

# Получение данных из системы
:local identity [/system/identity/get name]
:local uptime [/system/resource/get uptime]
:local cpuLoad [/system/resource/get cpu-load]RouterOS Script

Scheduler

# Запуск скрипта каждый день в 3:00
/system/scheduler/add name=daily-backup     start-time=03:00:00 interval=1d     on-event="/system/script/run backup-script"

# Запуск при старте системы
/system/scheduler/add name=on-boot     start-time=startup     on-event="/system/script/run startup-checks"

# Каждые 5 минут
/system/scheduler/add name=health-check     interval=5m     on-event="/system/script/run check-tunnels"RouterOS CLI

Netwatch

Netwatch мониторит доступность хостов и выполняет действия при изменении статуса.

# Мониторинг шлюза провайдера с переключением на резерв
/tool/netwatch/add host=203.0.113.1     type=icmp interval=10s timeout=3s     up-script=":log info \"ISP1 UP\"; /ip/route/set [find comment=\"ISP1\"] disabled=no"     down-script=":log warning \"ISP1 DOWN\"; /ip/route/set [find comment=\"ISP1\"] disabled=yes"RouterOS CLI

Практические примеры

Автоматический бэкап с отправкой на email

# Создаём скрипт бэкапа
/system/script/add name=backup-script source={
    :local date [/system/clock/get date]
    :local identity [/system/identity/get name]
    :local filename "$identity-$date"

    # Создаём бэкап и экспорт
    /system/backup/save name=$filename
    /export file=$filename

    # Отправляем на email
    /tool/e-mail/send         to="admin@example.com"         subject="Backup: $identity ($date)"         body="Auto backup attached"         file="$filename.backup,$filename.rsc"

    # Удаляем старые файлы через 7 дней
    :delay 5s
    :foreach f in=[/file/find where name~"backup"] do={
        :local fdate [/file/get $f creation-time]
        # ... проверка возраста файла
    }
}

# Расписание: ежедневно в 3:00
/system/scheduler/add name=nightly-backup     start-time=03:00:00 interval=1d     on-event="/system/script/run backup-script"RouterOS Script

Мониторинг температуры CPU

/system/script/add name=temp-monitor source={
    :local temp [/system/health/get [find name=cpu-temperature] value]
    :if ($temp > 80) do={
        :log error "CPU temperature critical: $temp C"
        /tool/e-mail/send to="admin@example.com"             subject="ALERT: High CPU temp on $[/system/identity/get name]"             body="Temperature: $temp C"
    }
}RouterOS Script
💡
Отладка скриптов: Используйте :put для вывода в терминал и :log info для записи в системный лог. Логи доступны через /log/print или в Winbox → Log.