Manual de linguagem de script Este manual fornece introdução ao RouterOS embutidos poderosa linguagem de script. 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 eentos. Scripts podem ser armazenados em reposit!rio de scripts ou pode ser escrito diretamente para consolar . Os eentos usados para acionar a execução de scripts incluem" mas não n ão estão limitados ao Sistema Sc#eduler " Sc#eduler " a ferramenta de monitoramento de tráfego " tráfego " e as $et%atc# &erramenta eentos gerados.
Estrutura de linha RouterOS roteiro ' diidido em n(mero de lin#as de comando. )s lin#as de comando são executados um por um at' o final do script ou at' ocorrer erro de execução.
Linha de comando *onsola RouterOS utiliza seguinte sintaxe de comando+ [prefix] [path] command [uparam] [param=[value]] .. [param=[value]]
,-refixo / 0+0 ou caractere 010 2ue indica se o comando ' 3*E 3*E ou ou camin#o. -ode ou pode não ser necessária.
,*amin#o / camin#o relatio ao n4el de menu dese5ado. -ode ou pode não ser necessária.
comando / um dos comandos comandos dispon4eis dispon4eis no n4el de menu especificado.
,6param / par7metro sem nome" dee ser especificado se o comando exige.
,-arams / se28ência de par7metros nomeados" seguido pelos respectios alores
O final da lin#a de comando ' representado pelo s4mbolo ";" ou ou de nova linha. 9s ezes "," ou ou de nova linha '
não necessário para acabar com a lin#a de comando.
*omando (nico dentro
(), [] or {} não
re2uer 2ual2uer sinal de fim de comando. &im de
comando ' determinada pelo conte(do do roteiro inteiro : If (true) = {fazer: colocar "lala"}
*ada lin#a de comando dentro de outra lin#a de comando inicia e termina com colc#etes 0,0 :concatenação de comando; . comando; . : olocar [! ip route et [encontrar porta de entrada = #.#.#.#]]$
Obsere 2ue o c!digo acima cont'm três t rês lin#as de comando+ + *olocar
1 3p route c#egar
encontrar porta de entrada < =.=.=.=
>in#a de comando pode ser constru4do a partir de mais de uma lin#a f4sica" seguindo as regras 5untando lin#a . lin#a .
Linha Física ) lin#a f4sica ' uma se28ência de caracteres terminada por um :EO>; se28ência de fim/de/ lin#a. ?ual2uer uma das se2uências de terminação de lin#a padrão da plataforma pode ser usado+
unix /
janelas /
mac /
>& )S*33@ )S*33 *R >&@
)S*33 *R@
*onençAes padrão * para caracteres de noa lin#a pode ser usada :o personagem n B;.
Comentários 6m comentário começa com um caracter de #as# :C; e termina no fim da lin#a f4sica. Espaços em branco ou 2uais2uer outros s4mbolos não são permitidos antes s4mbolo #as#. Os comentários são ignorados pela sintaxe. Se o caráter :C; aparecem corda dentro dele não ' considerado um comentário. Exemplo % I&to ' um comentrio % omentrio ruim : m mundial$
% omentrio ruim
: *t m+tr "lala % i&to n-o ' um comentrio"
Linha que une Duas ou mais lin#as f4sicas podem ser unidas em lin#as l!gicas usando caractere de barra inertida :B;. ) lin#a 2ue termina em uma barra inertida não pode carregar um comentário. 6ma barra inertida não continuar um comentário. 6ma barra inertida não continua um s4mbolo" exceto para strings literais. ) barra inertida ' ilegal em outro lugar em uma lin#a de fora de uma string literal. Exemplo : If ( a = true / e 0 = fal&e) = {fazer: colocar " a 0"$
}
: If ( a = true / % ruim comentrio e 0 = fal&e) = {fazer: colocar " a 0"$
}
% omentrio / continuou 1 invlido (erro de &intaxe)
Espaço em branco entre os tokens O espaço em branco pode ser usado para separar os toens. O espaço em branco ' necessário entre dois toens somente se sua concatenação poderiam ser interpretadas como um s4mbolo diferente. Exemplo+ { : 2ocal, um verdadeiro$
: 2ocal de 0 fal&o$
% 3&pa4o& em 0ranco n-o ' nece&&ria : olocar (a 55 0)$ % 3&pa4o em 0ranco ' nece&&ria : olocar (a e 0)$ }
Espaços em branco não são permitidos
entre 0Fpar7metroG <
entre 0from < a < passo < < em fazer < else <
Exemplo+ %incorrect: : 6or i from = # a = 7 do = {: colocar i} &intaxe %correct: : 6or i from = # a = 7 do = {: colocar i} : 6or i from = # a = 7 do = {: colocar i} %incorrect ! Ip route adicionar porta de entrada = 8.8.8.8 %correct ! Ip route adicionar porta de entrada = 8.8.8.8
Scopes )s ariáeis podem ser usados apenas em certas regiAes do script. Essas regiAes são c#amadas de escopos. Imbito determina a isibilidade da ariáel. Existem dois tipos de escopos / globais e locais. 6ma ariáel declarada dentro de um bloco ' acess4el somente dentro desse bloco e os blocos fec#ados por ela" e somente ap!s o ponto de declaração. 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 blo2uear o acesso a certas ariáeis" estes 7mbitos são c#amados escopos locais. *ada escopo local está entre c#aes :0JK0;. { : 2ocal, a 8$ { : 9 local, $ : olocar ( a ; 0)$ } %line a0aixo ir erar erro : olocar ( a ; 0)$
}
$o c!digo acima ariáel b tem escopo local e não estará acess4el ap!s c#aeta fec#ado.
Nota *ada lin#a escrita no terminal ' tratado como escopo local )ssim" por exemplo" ariáel local definido não será is4el na pr!xima lin#a de comando e irá gerar erro de sintaxe [i?ro@i?]A: minhaBar local, um$ [i?ro@i?]A: colocar minhaBar erro de &intaxe (linha # coluna C)
!"iso N#o de$inir "ariá"eis globais dentro de %mbitos locais& $ote 2ue" mesmo ariáel pode ser definida como global" ele estará dispon4el apenas a partir de seu escopo" a menos 2ue ele 5á não estier definido. { : 2ocal, a 8$ { : 9 lo0al de $ } : olocar ( a ; 0)$ }
*!digo acima irá gerar um erro.
'ala"ras(cha"e )s seguintes palaras são palaras/c#ae e não podem ser usados como nomes de ariáeis e de funçAes+ ou n-o e em
)elimitadores Os seguintes s4mbolos serem como delimitadores na gramática+ () [] {}:$
!
*s tipos de dados >inguagem de script RouterOS tem seguintes tipos de dados+ +ipo
)escriç#o
NUM (número)
/ L bits assinado inteiro" poss4el entrada #exadecimal@
bool (booleano)
/ Nalores pode abel#a true ou fal&e @
str (string)
/ Se28ência de caracteres@
ip
/ Endereço 3-@
IP6-prefix
/ -refixo 3-L
id (identificaço interna)
/ Nalor #exadecimal prefixado por sinal . *ada item do menu tem atribu4do o n(mero (nico / 3D interno@
tempo
/ Data e #ora de alor@
ordem
/ Se2uência de alores organizados em uma matriz@
!ero
/ -adrão tipo de ariáel se nen#um alor ' atribu4do@
Seq,-ncias de escape constantes Se28ências de escape a seguir podem ser usados para definir certo caráter especial dentro de string+ ./
3nsira aspas duplas
..
3nsira barra inertida
.N
3nserir uma noa lin#a
. 0
3nsira retorno de carro
.+
3nsira guia #orizontal
.1
Sa4da P caráter. *aso contrário" P ' usado para ligar ariáel.
.2
Sa4daQ personagem. *aso contrárioQ ' usado para imprimir 0a5uda0 no console.
. 3
/ Espaço
.!
/ E> :xT;
.4
/ acspace :xU;
.F
/ )anço de formulário :x&&;
.5
3nserir tabulação ertical
. 6x
*aráter impressão de alor #exadecimal. $(mero #exadecimal dee usar letras mai(sculas.
Exemplo
: oloDue "/ E / F / / / 6 / r / n3&te / r / ni& / r / na / r / n@e&t"$
2ue irá mostrar na exposição G322H @hi& i& a te&t
*peradores *peradores aritm7ticos Operadores aritm'ticos usuais são suportados no RouterOS linguagem de script *pearator
)escriç#o
Exemplo
"#"
)l'm binário
:put (8;)$
"-"
subtração binária
:put (#1)$
"$"
multiplicação binária
:put (JF)$
"%"
diisão binária
:put (#K ! 7)$ :put ((#K)!7)
"-"
negação unária
{ :local a #$ :put (1a)$ }
Nota para a diisão de trabal#o 2ue ocê tem 2ue usar c#aes ou espaços em torno de diidendos assim 2ue não ' confundido como endereço 3-
*peradores 0elacionais *pearator
)escriç#o
Exemplo
"&"
menos
:put (8L)$
"'"
maior
:put (8A)$
""
igual
:put (7=7)$
"&"
inferior ou igual
"' "
maior ou igual
" "
não igual
*peradores l8gicos *pearator ""* "No"
)escriç#o $VO l!gico
Exemplo :put (Mtrue)$
"++"* ","
E l!gico
:put (true55true)
""* ".u"
O6 l!gico
:put (trueNNfal&e)$ :put (#.#.#.#!87 in #.K.K.K!E)$
"Na"
*peradores bit a bit Operadores bit a bit estão trabal#ando em n(mero e endereço ip tipos de dados .
*pearator
)escriç#o
Exemplo
"/"
inersão bit
""
OR bit a bit. Executa operação l!gica OR em cada par de bits correspondentes. Em cada par o resultado ' 0=0" se um dos bits ou ambos os bits forem 0=0" caso contrário" o resultado ' 00.
"0"
WOR. O mesmo 2ue OR" mas o resultado em cada posição ' 0=0" se dois bits não são iguais" e 00 se os bits são iguais.
"+"
)$D bit a bit. Em cada par o resultado ' 0=0 se o primeiro e segundo bit ' 0=0. *aso contrário" o resultado ' 00.
"&&"
desio X es2uerda por determinada 2uantidade de bits
"''"
deslocamento para a direita por determinada 2uantidade de bits
:put (OK.K.K.K)
*s operadores de concatenaç#o *pearator
)escriç#o
Exemplo
"1"
concatena duas strings
:put (PconcatenateQ . P P . P&trinQ)$
"*"
concatena duas matrizes ou adiciona elemento de matriz
:put ({#$7$8} , F )$
Y poss4el adicionar os alores das ariáeis para strings sem operador de concatenação+ : >inhaBar lo0al "mundo"$
: olocar ("Hl" m+Bar.)$ % *rRxima linha faz o me&mo Due acima : *ut "Hl m+Bar"$
6sando P , e P :; na se28ência" ' poss4el adicionar expressAes dentro de strings+ : 2ocal, a F$
: 9 local, $ : olocar "Fx = ( a J 0)"$
: olocar "@emo& [: len [ip route ! encontrar]] rota&"$
*utros *peradores *pearator
)escriç#o
Exemplo
"23"
substituição de comando. -ode conter apenas lin#a de comando (nico
:put [ :len "m+ te&t &trin"$ ]$
"()"
sub expressão ou operador de agrupamento
:put ( "value i& " . (;F))$
"4"
operador de substituição
:lo0al a F$ :put a$
"/"
operador binário 2ue corresponde alor contra -OS3W estendido expressão regular
3mprimir todas as rotas 2ual gate%aZ termina com [[ !ip route print Shere ateSa+O"T[K1 U //.]J7K7"
Obter um elemento arraZ pelas c#aes
"-'"
[
5ariá"eis >inguagem de script tem dois tipos de ariáeis+
mundial /
acess4el a partir de todos os scripts criados pelo usuário atual" definido
pelo mundial de palaras/c#ae@
local /
acess4el apenas dentro do atual escopo " definido por local de palara/c#ae.
Nota ) partir da L.[ não pode #aer ariáeis indefinidas. ?uando a ariáel ' indefinido parser ai tentar ol#ar para as ariáeis definidas" por exemplo" DH*- lease-script ou Hotspot on-login *ada ariáel" exceto para constru4do em ariáeis RouterOS" dee ser declarada antes do uso de palaras/c#ae locais ou globais. )s ariáeis indefinidas será marcado como indefinido e irá resultar em erro de compilação. Exemplo+
% euinte cRdio ir re&ultar em erro de compila4-o, porDue minhaBar ' u&ado &em declara4-o : et minhaBar "meu valor"$ : olocar minhaBar
*!digo correto+ : >inhaBar local$ : et minhaBar "meu valor"$ : olocar m+Bar$
) exceção ' 2uando o uso de ariáeis definidas" por exemplo" por arrendamento-script DH* cript ! &i&tema add name = polVtica m+2ea&ecript = / ftp, re0oot ler, e&crever, polVtica, te&te, Win9ox, pa&&Sord, &niff, &en&Vvel, api / &ource = ": lo info / lea&e< / r / / X: lo info / lea&eerverXame / r / / X: info lo / lea&e9ound "
! Ip dhcp1&erver &et m+erver lea&e1&cript = m+2ea&ecript
Os caracteres álidos nos nomes de ariáeis são letras e algarismos. Se o nome da ariáel cont'm 2ual2uer outro personagem" em seguida" o nome da ariáel dee ser colocado entre aspas duplas. Exemplo+ nome da varivel %valid : >inhaBar local$
nome da varivel %invalid
: 2ocal de meu1var$
%valid porDue a&pa& dupla& : Ylo0al "minha1var"$
Se a ariáel ' inicialmente definida sem alor" em seguida" tipo de dados ariáel ' definida para zero, caso contrário" o tipo de dados ' determinado automaticamente pelo mecanismo de script. -or ezes" a conersão de um tipo de dados para outro ' necessária. Ele pode ser conseguida utilizando comandos de conersão de dados . Exemplo+ corda %convert para arra+ : >+tr local "#,7,8,,F"$ : olocar [: t+peof m+tr]$ : >+
Os nomes das ariáeis são case sensitie. : >inhaBar local "Hl" % euinte linha ir erar erro, porDue >ZB< varivel n-o e&t definida : olocar >ZB< % Rdio correto : olocar minhaBar
*on5unto de comandos sem alor será un/definir a ariáel :retirar do meio ambiente" de noo na L.[; %remove varivel de am0iente : >inhaBar lo0al "m+Balue" : et minhaBar$
Comandos *s comandos globais *ada comando global dee começar com Comando Sintaxe
":" Sinal"
caso contrário ele será tratado como ariáel.
)escriç#o
%
á ao menu raiz
11
oltar a um n4el de menu
Exemplo
listar todos os comandos de menu dispon4eis e brees descriçAes
5
global
:lo0al LvarA [LvalueA]
definir ariáel global
:lo0al m+Bar "&omethin"$ :put m+Bar$
local
:local LvarA [LvalueA]
definir ariáel local
{ :local m+2ocalBar "I am local"$ :put m+Bar$ }
bip
:0eep LfreDA LlenthA
beep alto/falante embutido
atraso
:dela+ LtimeA
nada fazem para um determinado per4odo de tempo
colocar
:put Lexpre&&ionA
colocar o argumento fornecido para consolar
len
:len Lexpre&&ionA
comprimento se28ência de retorno ou matriz contagem de elementos
:put [:len "lenth=E"]$
tpeof
:t+peof LvarA
tipo de retorno ariáel de dados
:put [:t+peof ]$
escol7er
:pic? LvarA L&tartA[LendA]
gama de elementos ou substring oltar. Se a posição final não ' especificado" irá retornar apenas um elemento de uma matriz.
:put [:pic? "a0cde" # 8]
log
:lo LtopicA Lme&&aeA
escreer mensagem de log do sistema .\!picos dispon4eis são "de0u, error, info and
:lo info "Gello from &cript"$
Sarnin" tempo
:time Lexpre&&ionA
oltar interalo de tempo necessário para executar o comando
:put [:time {:for i from=# to=#K do={ :dela+ #KKm& }}]$
conjunto
:&et LvarA [LvalueA]
atribuir alor X ariáel declarada.
:lo0al a$ :&et a true$
encontrar
:find LarA LarA L&tartA
posição da substring ou matriz elemento oltar
:put [:find "a0c" "a" 1#]$
ambiente
:environment print L&tartA
imprimir informação ariáel inicializada
:lo0al m+Bar true$ :environment print$
comandos do terminal relacionado
terminal erro
:error LoutputA
]erar erro console e parar de executar o script
analisar
:par&e Lexpre&&ionA
analisar corda e oltar comandos de console analisado. -ode ser usado como função.
:lo0al m+6unc [:par&e ":put helloM"]$ m+6unc$
resol8er
:re&olve LarA
oltar endereço 3- de determinado nome D$S
:put [:re&olve "SSS.mi?roti?.com"]$
9o:rra
:toarra+ LvarA
conerter ariáel de matriz
tobool
:to0ool LvarA
conerter ariáel para booleano
reumat;ide
:toid LvarA
conerter ariáel para identificação
interna 9oIP
:toip LvarA
conerter ariáel para o endereço 3-
toip6
:toip LvarA
conerter ariáel de endereço 3-L
tonum
:tonum LvarA
conerter ariáel para inteiro
tostr
:to&tr LvarA
conerter ariáel para string
totime
:totime LvarA
conerter a ariáel tempo
Comandos especí$icos do menu Comandos comuns )p!s os comandos dispon4eis da maioria dos sub/menus+ Comando
Sintaxe
)escriç#o
adicionar
add LparamA=LvalueA..LparamA=LvalueA
adicionar noo item
remo8er
remove LidA
remoer o item selecionado
permitir
ena0le LidA
permitir item selecionado
incapacita
di&a0le LidA
desatiar o item selecionado
&et LidA LparamA=LvalueA..LparamA=LvalueA
alterar o par7metro itens selecionados" mais do 2ue um par7metro pode ser especificado no momento.-ar7metro pode ser desactiado" especificando ^ antes de par7metro.
r conjunto
Exemplo+ !ip fireSall filter add chain=0lah action=accept protocol=tcp port=#78 nth=,7 print &et K Mport chain=0lah7 Mnth protocol=udp obter
et LidA LparamA=LvalueA
obter os itens selecionados alor do par7metro
impresso
print LparamALparamA=[LvalueA]
itens do menu de impressão. Sa4da depende de par7metros de impressão especificadas. ) maioria dos par7metros de impressão comum estão descritos a2ui
exportaço export [file=LvalueA]
editar
edit LidA LparamA
configuração de exportação a partir do menu atual e seus sub/menus :se #ouer;. Se o par7metro do ar2uio ' de sa4da especificado será escrito para o ar2uio com extensão 0.rsc " caso contrário" a sa4da será impressa para consolar. *omandos exportados podem ser importados pelo comando de importação editar itens selecionados propriedade em built/ in editor de texto
encontrar
Retorna lista de n(meros internos para os itens 2ue são acompan#adas por determinada expressão. -or exemplo+ :put [!interface find
find Lexpre&&ionA
nameO"ether"]
importaç#o 3mportar comando está dispon4el no menu de raiz e ' usado para importar a configuração de ar2uios criados porexportação de comando ou escritas manualmente com a mão. par%metros de impress#o Nários par7metros estão dispon4eis para o comando de impressão+ 'ar%metro
)escriç#o
Exemplo
anexar como 8alor
sa4da de impressão como matriz de par7metros e seus alores
bre8e
imprimir bree descrição
detal7e
imprimir descrição detal#ada" a sa4da não ' tão leg4el como bree sa4da" mas pode ser (til para isualizar todos os par7metros
contar-onl
imprimir somente a contagem de itens de menu
ar
imprimir sa4da para o ar2uio
seguir
imprimir todas as entradas atuais e acompan#ar noas entradas at' ctrl/c ' pressionado" muito (til ao isualizar as entradas de log
!lo print folloS
siga-onl
impressão e acompan#ar apenas noas entradas at' ctrl/c ' pressionado" muito (til ao isualizar as entradas de log
!lo print folloS1 onl+
a partir de
par7metros apenas do item especificado impressão
!u&er print from=admin
inter8alo
) impressão cont4nua de sa4da no interalo de tempo selecionado" (til para rastrear mudanças onde folloS não ' aceitáel
!interface print interval=7
conciso
Mostrar detal#es em formato compacto e má2uina amigáel
8alor-lista
apresentam alores um por lin#a :bons para fins de análise;
sem-
Se a sa4da não se encaixam na tela do console" então não pare" imprimir todas as informaçAes em uma (nica peça
paginaço onde
:put [!ip addre&& print a&1value]
expressAes seguidos por onde o par7metro pode ser usado para filtrar entradas emparel#adas
Mais do 2ue um par7metro pode ser especificado em um momento" por exemplo" print count1onl+ interval=# Shere interface="ether#"
Loops e instruç9es condicionais
!ip route
!ip route print Shere interface="ether#"
Loops Comando
Sintaxe
)escriç#o
do11=7ile
:do { Lcommand&A } Shile=( Lcondition&A )$ :Shile ( Lcondition&A ) do={ Lcommand&A }$
executar comandos at' 2ue determinada condição se5a atendida.
por
:for LvarA from=LintA to=LintA &tep=LintA do={ Lcommand&A }
executar comandos ao longo de um determinado n(mero de iteraçAes
foreac7
:foreach LvarA in=Larra+A do={ Lcommand&A }$
executar comandos para cada um dos elementos em lista
:nstruç#o condicional Comando
Sintaxe :if(LconditionA) do={Lcommand&A} el&e={Lcommand&A} Lexpre&&ionA
se
)escriç#o Se uma determinada condição ' true " então executar comandos no do bloco" caso contrário executar comandos na el&e 2uadra" se especificado.
Exemplo+ { : >+9ool locai& verdadeiro$ : If ( m+9ool = fal&e) = {fazer: colocar "valor ' fal&e"} el&e = {: colocar "valor ' true"} }
Funç9es >inguagem de script não permite criar diretamente as funçAes" no entanto" pode escreer+ comando analisar como uma solução alternatia. ) partir de uma noa sintaxe L.[ ' adicionado para definir mais fácil tais funçAes e at' mesmo passar par7metros.\amb'm ' poss4el retornar o alor da função com comando de retorno&
Ne5a os exemplos abaixo+ fun4-o %define e execut1lo : >+6unc mundial do = {: colocar "Hl da fun4-o"} >+6unc
&aVda: Hl da fun4-o %pa&& arumento& para a fun4-o : >+6unc mundial do = {: colocar "ar a = a"$
: olocar "ar \#\ = #"}
>+6unc a = "e&te ' ar um valor" "e&te ' o valor ar#"
&aVda: ar a = ar e&te ' um valor ar \#\ = e&ta ' valor ar#
Obsere 2ue #á duas maneiras como passar argumentos+
passar arg com nome espec4fico :0a0 no nosso exemplo;
passar o alor sem nome arg" arg" nesse caso" 0=0" 0[0" .. 0n0 são utilizados.
0etorno exemplo : >+6unc mundial do = {: return ( a ; 0)} : olocar [ m+6unc a = 0 = 7] &aVda: E
Nocê pode at' mesmo clonar script existente do ambiente de script e usá/lo como função. %
cript ! &i&tema de add name = fonte m+&cript = ": colocar /" Hl minhaBar / ""M : *t m+6unc [: anali&ar [! &cript &i&tema et &ource m+&cript]] >+6unc m+Bar = mundo &aVda: Hl >undoM
!"iso Se a função cont'm ariáel global definida" cu5o nome corresponde ao nome do par7metro passado" ariáel então definido globalmente ' ignorado" para compatibilidade com scripts escritos para ersAes mais antigas. Este recurso pode mudar em ersAes futuras. E"ite o uso de par%metros com o mesmo nome como "ariá"eis globais& -or exemplo+ : >+7 lo0al "#78"
: >+6unc mundial do = {: m+7 lo0al$ "lala"$
: olocar m+7$
: onunto m+7
: olocar m+7}
>+6unc m+7 = #78 : olocar "valor lo0al de m+7"
Sa4da será+ #.78 lala valor lo0al de #78
Exemplo $unç#o aninhada
Nota para c#amar uma outra função seu nome precisa ser declarado :o mesmo 2ue para as ariáeis;
: 6unc< mundial do = {:} return F : 6unc9 mundial do = { : 6unc< lo0al$ : eturn ([ func<] ; ) } : olocar [ func9] aVda: U
)etectar erros em tempo de execuç#o ) partir de script L.[ tem capacidade de detectar erros em tempo de execução. -or exemplo" ,code+ resloe ,1 code comando se não irá lançar um erro e 2uebrar o script. [i?ro@i?]A {: colocar [: re&olver SSS.example.com]$
: olocar
"lala"$} falha: nome dn& n-o exi&te
)gora 2ueremos pegar esse erro e siga o nosso roteiro+ : ^o { : olocar [: re&olver SSS.example.com]$ } Hn1error = {: colocar "re&olvedor falhou"}$ : olocar "lala"
&aVda:
re&olvedor falhou lala
*peraç9es com ;atri
[
a+ = 7}$
: olocar ( a 1A "a_")}
7
Loop atra"7s de cha"es e "alores comando foreac# pode ser usado para percorrer as c#aes e elementos+ [
"<_" = #$
+ = 7$
F} = {fazer:
colocar (" ? = v")} K = 7 # = F a_ = # + = 7
Nota Se o elemento matriz tem c#ae" em seguida" esses elementos são classificados em ordem alfab'tica" sem elementos c#aes são moidos antes elementos com c#aes e sua ordem não ' alterada :er exemplo acima;. !ltere o "alor do elemento da matri< =nica [i?ro@i?]A: pt um {x = #$
+ = 7}
[i?ro@i?]A: &et ( a 1A "x") F [i?ro@i?]A: am0iente de impre&&-o a = {x = F$
+ = 7}
Reposit!rio Script Ní"el sub(menu !&+&tem
&cript
*ont'm todos os scripts de usuário criada. Os scripts podem ser executados de árias maneiras diferentes+
no e"ento / scripts são executados automaticamente em alguns eentos de instalaçAes : programador "$et_atc# " NRR- ;
por outro script / execução de scripts dentro de script ' permitido
manualmente / a partir do console executando prazo de comando ou em _inox
'ropriedade
)escriç#o
nome (string; padrão+ "Script [num]")
nome do script
pol>tica (string; padrão+;
lista de pol4ticas aplicáeis+
permissAes )-3 / api
$tp / pode fazer logon remotamente atra's de &\- e eniar e recuperar ar2uios do roteador
locais / pode fazer logon localmente ia console
alterar sen#as / senha
política / gerenciar as pol4ticas de usuário" adicionar e remoer usuário
ler / pode recuperar a configuração
reiniciar / pode reiniciar o roteador
sensí"el / er sen#as e outras informaçAes confidenciais
$ungada / pode executar sniffer" toc#a etc
ssh / pode fazer logon remotamente ia SSH
telnet / pode fazer logon remotamente ia telnet
teste / pode executar o ping" traceroute teste" largura de banda
>eb / podem fazer logon remotamente ia #ttp
?inbox / permissAes _inbox
escre"er / pode recuperar e alterar a configuração
>eia descriçAes de pol4ticas mais detal#adas a2ui fonte (string;)
*!digo fonte Script
>eia apenas as propriedades de status+ 'ropriedade
)escriç#o
última iniciado (data)
Data e #ora em 2ue o roteiro foi passado inocado.
propriet?rio (string)
O usuário 2ue criou o roteiro
run-count (integer)
*ontador 2ue conta 2uantas ezes script foi executado
*omandos espec4ficos do menu Comando executar (execute [id | name])
)escriç#o Executar script especificado por 3D ou nome
!mbiente Ní"el sub(menu
!&+&tem &cript environment
!environment
*ont'm todas as ariáeis definidas pelo usuário e seus alores atribu4dos. [i?ro@i?]A: exemplo lo0al$ [i?ro@i?]A: &et exemplo #78 [i?ro@i?]A ! print am0iente "3xemplo" = #78
>eia apenas as propriedades de status+ 'ropriedade
)escriç#o
nome (string)
$ome da ariáel
usu?rio (string)
O usuário 2ue definiu ariáel
8alor :
Nalor atribu4do X ariáel
;
+rabalho Ní"el sub(menu !&+&tem
&cript o0
>ista de todos os scripts em execução cont'm. >eia apenas as propriedades de status+ 'ropriedade propriet?rio (string)
)escriç#o 6suário roteiro 2ue está sendo executado
pol>tica (arra)
>ista de todas as pol4ticas aplicadas ao roteiro
começou (data)
Data e #ora local 2uando o script foi iniciado