1. КЕРІВНИЦТВО ПО мова скриптів
Це керівництво є введенням в потужний вбудований мова скриптів для RouterOS.
Скриптова мова routeros надає можливість для автоматизації завдань засобами виконання певних ползователей скриптів, пов'язаних з будь-якими подіями.
Скрипти можуть можуть зберігатися в репозиторії (сховище) або можуть бути написані прямо в консолі. Події, що викликають виконання скриптів генеруються системним планувальником, утилітою моніторингу трафіку і утилітою netwatch, але не обмежені лише цими генераторами.
1.1 СТРУКТУРА КОМАНДИ
Скрипти для RouterOS складаються з команд. Команди виконуються одна за однією, поки не буде досягнутий кінець скрипта або не виникне помилка під час виконання.
Консоль використовує наступний синтаксис команди:
[Prefix] [path] command [uparam] [param = [value]. param = [value]]
[Prefix] - може набувати таких символьні значення, ":" або "/", що визначає команду, як ICE або шлях.
[Path] - відносний шлях до бажаного рівня меню.
command - одна з можливих вбудованих команд, визначених рівнем меню.
[Uparam] - безіменний параметр, кіт. повинен бути визначений, якщо цього вимагає вбудована команда (command).
[Params] - послідовність ім'ям параметрів зі значеннями.
* Все, що перераховано в квадратних дужках є необов'язковими складовими частинами команди.
Кожна команда закінчується символом ";" або кінцем рядка. У деяких випадках ці символи не потрібні для закінчення команди. Команда всередині (), [] або <> не потребує таких символах.
Кожна команда всередині іншої команди починається і закінчується квадратними дужками [] (об'єднання команд):
put [/ ip route get [find gateway = 1.1.1.1]];
Команда може складатися з декількох рядків, об'єднаних спеціальним символом. Дивись "Об'єднання команд".
* Команда і EOL (End of Line) *
Команда - це послідовність символів, що закінчуються EOL послідовністю. Будь-яка зі стандартних послідовностей EOL може бути використана:
- Unix = ASCII LF
- Windows = ASCII CR LF
- Mac = ASCII CR
if ($ a = true \
and $ b = false) do =<:put “$a $b”;>
: If ($ a = true \ # невдала спроба
and $ b = false) do =<:put “$a $b”;>
# Comment \
continued - invalid (синтаксична помилка)
* Прогалини між токенами *
Прогалини використовуються для поділу токенов. Пропуск необхідний між двома токенами тільки якщо їх об'єднання може бути інтерпретовано, як інший токен. приклад:
<
: Local a true; : Local b false;
# Прогалини не потрібні
: Put (ab);
# Прогалини потрібні
: Put (a and b);
>
Пропуски не дозволені в наступних конструкціях:
-
- from =, to =, step =, in =, do =, else =
# Неправильно:
: For i from = 1 to = 2 do = <:put $i>
# Правильно:
: For i from = 1 to = 2 do =<:put $i>
: For i from = 1 to = 2 do =<:put $i>
# неправильно
/ Ip route add gateway = 3.3.3.3
# правильно
/ Ip route add gateway = 3.3.3.3
Глобальний контекст, інакше коренева область, видимості є областю за замовчуванням для скрипта. Вона створюється автоматично і існує завжди.
Користувач може визначити свої області видимості за допомогою дужок <>. Такі області називаються локальними. приклад:
: Local a 3;
: Local b 4;
: Put ($ a + $ b);
>
# Команда нижче некоректна, оскільки змінна b не визначена в даній області видимості
: Put ($ a + $ b);
>
Важливе зауваження: кожна команда в консолі обробляється в своїй локальній області видимості.
[Admin @ MikroTik]>: local myVar a;
[Admin @ MikroTik]>: put $ myVar
syntax error (line 1 column 7)
Важливо: чи не визначайте глобальні змінні всередині локальних областей видимості.
1.2 зарезервованих слів
Наступні слова є зарезервованими і не можуть бути використані, як імена змінних або функцій: