No RouterOS, variáveis são usados principalmente em scripts para armazenar valores temporários — endereços IP, contadores, resultados de comandos — e reutilizá-los ao longo da execução. A linguagem de scripting do RouterOS tem sintaxe própria, diferente de linguagens como Bash ou Python.
Declaração e atribuição
Para declarar uma variável, usa-se :local (local) ou :global (global):
:local minhaVar “valor”
:global minhaGlobal 42
Para atribuir (ou reatribuir) um valor, usa-se :set:
:set minhaVar “novo valor”
:set minhaGlobal ($minhaGlobal + 1)
Para ler o valor, prefixe o nome com $:
:put $minhaVar
Variável Local (:local)
Existe apenas dentro do bloco/script onde foi declarada. Quando o script termina, ela é destruída. Ideal para cálculos intermediários, evitando poluição de memória.
:local ipAddr “192.168.1.1”
:local msg (“Endereço: ” . $ipAddr)
:put $msg
# Saída: Endereço: 192.168.1.1
Variável Global (:global)
Persiste entre execuções de scripts diferentes, enquanto o roteador estiver ligado (é apagada com reboot). Útil para passar dados entre scripts ou manter estado entre agendamentos.
# Script A — define a variável global
:global contadorAcessos
:set contadorAcessos ($contadorAcessos + 1)
# Script B — lê a mesma variável
:global contadorAcessos
:put (“Total de acessos: ” . $contadorAcessos)
Em qualquer script que queira usar uma variável global, é necessário declará-la com :global antes de acessá-la — mesmo que já tenha sido definida por outro script.
Comparativo rápido
| Característica | :local | :global |
|---|---|---|
| Escopo | Apenas no script atual | Qualquer script |
| Duração | Até o fim da execução | Até o reboot |
| Declaração obrigatória em cada script | — | Sim |
| Uso indicado | Lógica interna | Compartilhar estado |
Dica prática
Para inspecionar todas as variáveis globais ativas no momento, use o terminal:
/system script environment print





