Escolar Documentos
Profissional Documentos
Cultura Documentos
Host de script fornece uma maneira de automatizar algumas tarefas de manutenção roteador por
meio da execução de scripts definidos pelo usuário delimitadas a alguma ocorrência de eventos.
Scripts podem ser armazenados em repositório de scripts ou pode ser escrito diretamente
para consolar . Os eventos usados para acionar a execução de scripts incluem, mas não estão
Estrutura de linha
RouterOS roteiro é dividido em número de linhas de comando. As linhas de comando são
Linha de comando
[Prefixo] - ":" ou caractere "/" que indica se o comando é ICE ou caminho. Pode ou pode
não ser necessária.
[Caminho] - caminho relativo ao nível de menu desejado. Pode ou pode não ser
necessária.
O final da linha de comando é representado pelo símbolo ";" ou de nova linha. Às vezes "," ou de
Comando único dentro (), [] or {} não requer qualquer sinal de fim de comando. Fim de
Cada linha de comando dentro de outra linha de comando inicia e termina com colchetes
: Colocar
/ Ip route chegar
encontrar porta de entrada = 1.1.1.1
Linha de comando pode ser construído a partir de mais de uma linha física, seguindo as regras
juntando linha .
Linha Física
A linha física é uma seqüência de caracteres terminada por um (EOL) seqüência de fim-de-
linha. Qualquer uma das sequências de terminação de linha padrão da plataforma pode ser
usado:
unix - LF ASCII;
janelas - ASCII CR LF;
mac - ASCII CR;
Convenções padrão C para caracteres de nova linha pode ser usada (o personagem n \).
Comentários
Um comentário começa com um caracter de hash (#) e termina no fim da linha física. Espaços
em branco ou quaisquer outros símbolos não são permitidos antes símbolo hash. Os comentários
são ignorados pela sintaxe. Se o caráter (#) aparecem corda dentro dele não é considerado um
comentário.
Exemplo
# Isto é um comentário
# Comentário ruim
Duas ou mais linhas físicas podem ser unidas em linhas lógicas usando caractere de barra
invertida (\). A linha que termina em uma barra invertida não pode carregar um comentário. Uma
barra invertida não continuar um comentário. Uma barra invertida não continua um símbolo,
exceto para strings literais. A barra invertida é ilegal em outro lugar em uma linha de fora de
Exemplo
: If ($ a = true \
# Comentário \
O espaço em branco pode ser usado para separar os tokens. O espaço em branco é necessário
entre dois tokens somente se sua concatenação poderiam ser interpretadas como um símbolo
diferente. Exemplo:
: Colocar (a e b);
Exemplo:
#incorrect:
#incorrect
#correct
Scopes
As variáveis podem ser usados apenas em certas regiões do script. Essas regiões são chamadas
Escopo global
Escopo escopo ou raiz global é escopo padrão do script. Ele é criado automaticamente e não pode
ser desligado.
Âmbito local
O usuário pode definir seus próprios grupos para bloquear o acesso a certas variáveis, estes
âmbitos são chamados escopos locais. Cada escopo local está entre chaves ("{}").
: Local, a 3;
: B local, 4;
: Colocar ($ a + $ b);
: Colocar ($ a + $ b);
No código acima variável b tem escopo local e não estará acessível após chaveta fechado.
Nota: Cada linha escrita no terminal é tratado como escopo local
Assim, por exemplo, variável local definido não será visível na próxima linha de comando e irá
Note que, mesmo variável pode ser definida como global, ele estará disponível apenas a partir de
: Local, a 3;
: B global de 4;
: Colocar ($ a + $ b);
Palavras-chave
As seguintes palavras são palavras-chave e não podem ser usados como nomes de variáveis e de
funções:
ou não e em
Delimitadores
Os seguintes símbolos servem como delimitadores na gramática:
() [] {}:; $ /
Os tipos de dados
Linguagem de script RouterOS tem seguintes tipos de dados:
Tipo Descrição
NUM (número) - 64 bits assinado inteiro, possível entrada hexadecimal;
ip - Endereço IP;
id (identificação interna) - Valor hexadecimal prefixado por sinal '*'. Cada item do menu tem atribuído o número único -
ID interno;
Seqüências de escape a seguir podem ser usados para definir certo caráter especial dentro de
string:
\_ - Espaço
\A - BEL (0x07)
\B - Backspace (0x08)
\ Xx Caráter impressão de valor hexadecimal. Número hexadecimal deve usar letras maiúsculas.
Exemplo
Operadores
Operadores aritméticos
Nota: para a divisão de trabalho que você tem que usar chaves ou
espaços em torno de dividendos assim que não é confundido como
endereço IP
Operadores Relacionais
Opearator Descrição Exemplo
"<" menos :put (3<4);
Operadores lógicos
Opearator Descrição Exemplo
"!", "Não" NÃO lógico :put (!true);
"|" OR bit a bit. Executa operação lógica OR em cada par de bits correspondentes. Em cada
par o resultado é "1", se um dos bits ou ambos os bits forem "1", caso contrário, o
resultado é "0".
"^" XOR. O mesmo que OR, mas o resultado em cada posição é "1", se dois bits não são
iguais, e "0" se os bits são iguais.
"&" AND bit a bit. Em cada par o resultado é "1" se o primeiro e segundo bit é "1". Caso
contrário, o resultado é "0".
Os operadores de concatenação
Opearator Descrição Exemplo
"." concatena duas strings :put (“concatenate” . “ “ .
“string”);
É possível adicionar os valores das variáveis para strings sem operador de concatenação:
: Local, a 5;
: B local, 6;
Outros Operadores
Opearator Descrição Exemplo
"[]" substituição de comando. Pode conter :put [ :len "my test string"; ];
apenas linha de comando único
"()" sub expressão ou operador de agrupamento :put ( "value is " . (4+5));
"~" operador binário que corresponde valor Imprimir todas as rotas qual gateway termina com 202
contra POSIX estendido expressão regular /ip route print where gateway~"^[0-9
\\.]*202"
Variáveis
Linguagem de script tem dois tipos de variáveis:
mundial - acessível a partir de todos os scripts criados pelo usuário atual, definido
pelo mundial de palavras-chave;
local - acessível apenas dentro do atual escopo , definido por local de palavra-chave.
Cada variável, exceto para construído em variáveis RouterOS, deve ser declarada antes do uso de
palavras-chave locais ou globais. As variáveis indefinidas será marcado como indefinido e irá
: Colocar US $ minhaVar
Código correto:
: MinhaVar local;
A exceção é quando o uso de variáveis definidas, por exemplo, por arrendamento-script DHCP
Script / sistema
Os caracteres válidos nos nomes de variáveis são letras e algarismos. Se o nome da variável
contém qualquer outro personagem, em seguida, o nome da variável deve ser colocado entre
: Local de meu-var;
: Global "minha-var";
Se a variável é inicialmente definida sem valor, em seguida, tipo de dados variável é definida
para zero, caso contrário, o tipo de dados é determinado automaticamente pelo mecanismo de
script. Por vezes, a conversão de um tipo de dados para outro é necessária. Ele pode ser
# Seguinte linha irá gerar erro, porque MYVAR variável não está definida
: Colocar US $ MYVAR
# Código correto
: Colocar US $ minhaVar
Conjunto de comandos sem valor será un-definir a variável (retirar do meio ambiente, de novo na
v6.2)
: Set minhaVar;
Comandos
Os comandos globais
Cada comando global deve começar com ":" Sinal, caso contrário ele será tratado como variável.
local :local <var> [<value>] definir variável local { :local myLocalVar "I am
local"; :put $myVar; }
typeof :typeof <var> tipo de retorno variável de dados :put [:typeof 4];
log :log <topic> <message> escrever mensagem de log do :log info "Hello from
sistema .Tópicos disponíveis script";
são "debug, error, info and
warning"
tempo :time <expression> voltar intervalo de tempo necessário :put [:time {:for i
para executar o comando from=1 to=10 do={ :delay
100ms }}];
conjunto :set <var> [<value>] atribuir valor à variável declarada. :global a; :set a true;
encontrar :find <arg> <arg> posição da substring ou matriz :put [:find "abc" "a" -
<start> elemento voltar 1];
analisar :parse <expression> analisar corda e voltar comandos de :global myFunc [:parse
console analisado. Pode ser usado ":put hello!"];
como função. $myFunc;
Comandos comuns
conjunto set <id> <param>=<value>..<param>=<value> alterar o parâmetro itens selecionados, mais do que
um parâmetro pode ser especificado no
momento.Parâmetro pode ser desactivado,
especificando '!' antes de parâmetro.
Exemplo:
/ip firewall filter add chain=blah
action=accept protocol=tcp port=123
nth=4,2
print
set 0 !port chain=blah2 !nth
protocol=udp
encontrar find <expression> Retorna lista de números internos para os itens que
são acompanhadas por determinada expressão. Por
exemplo: :put [/interface find
name~"ether"]
importação
Importar comando está disponível no menu de raiz e é usado para importar a configuração de
parâmetros de impressão
como valor saída de impressão como matriz de parâmetros e seus valores :put [/ip address
print as-value]
breve imprimir breve descrição
detalhe imprimir descrição detalhada, a saída não é tão legível como breve saída, mas
pode ser útil para visualizar todos os parâmetros
seguir imprimir todas as entradas atuais e acompanhar novas entradas até ctrl-c é /log print follow
pressionado, muito útil ao visualizar as entradas de log
siga-only impressão e acompanhar apenas novas entradas até ctrl-c é pressionado, muito /log print follow-
útil ao visualizar as entradas de log only
intervalo A impressão contínua de saída no intervalo de tempo selecionado, útil para /interface print
rastrear mudanças onde follow não é aceitável interval=2
sem- Se a saída não se encaixam na tela do console, então não pare, imprimir todas
paginação as informações em uma única peça
onde expressões seguidos por onde o parâmetro pode ser usado para filtrar entradas /ip route print
emparelhadas where
interface="ether1"
Mais do que um parâmetro pode ser especificado em um momento, por exemplo, /ip route
Instrução condicional
Comando Sintaxe Descrição
se :if(<condition>) do={<commands>} else={<commands>} Se uma determinada condição é true ,
<expression> então executar comandos no do bloco,
caso contrário executar comandos
na else quadra, se especificado.
Exemplo:
Funções
Linguagem de script não permite criar diretamente as funções, no entanto, pode escrever:
A partir de uma nova sintaxe v6.2 é adicionado para definir mais fácil tais funções e até mesmo
$ MyFunc
saída:
Olá da função
passar o valor sem nome arg, arg, nesse caso, "1", "2", .. "n" são utilizados.
Retorno exemplo
: Colocar [$ myFunc a = 6 b = 2]
saída:
Você pode até mesmo clonar script existente do ambiente de script e usá-lo como função.
#Adicione roteiro
Script / sistema de add name = fonte myscript = ": colocar \" Olá $ minhaVar
\ ""!
saída:
Olá Mundo!
Por exemplo:
: My2 global "123"
Saída será:
1.234
lala
Nota: para chamar uma outra função seu nome precisa ser declarado (o
mesmo que para as variáveis)
: FuncB mundial do = {
: FuncA global;
: Colocar [$ funcB]
Saída:
Por exemplo, [code]: reslove [/ code] comando se não irá lançar um erro e quebrar o script.
: Do {
: Colocar "lala"
saída:
resolvedor falhou
lala
Por exemplo:
0 = 2
1 = 5
aX = 1
y = 2
Nota: Se o elemento matriz tem chave, em seguida, esses
elementos são classificados em ordem alfabética, sem elementos
chaves são movidos antes elementos com chaves e sua ordem não
é alterada (ver exemplo acima).
[Admin @ MikroTik]>: pt um {x = 1; y = 2}
a = {x = 5; y = 2}
Repositório Script
Contém todos os scripts de usuário criada. Os scripts podem ser executados de várias
maneiras diferentes:
Propriedade Descrição
nome (string; padrão: "Script [num]") nome do script
Propriedade Descrição
última iniciado (data) Data e hora em que o roteiro foi passado invocado.
run-count (integer) Contador que conta quantas vezes script foi executado
Comando Descrição
executar (execute [id | name]) Executar script especificado por ID ou nome
Ambiente
Nível sub-menu:
"Exemplo" = 123
Propriedade Descrição
nome (string) Nome da variável
Trabalho
Nível sub-menu: /system script job
Propriedade Descrição
proprietário (string) Usuário roteiro que está sendo executado