Re: Script para ativar e desativar regras
hehehe não precisa te preocupar muito com isso por enquanto, mas valo la.
Percebe que logo depois do up-script= tem um aspa dupla? Aquilo indica que eu estou iniciando uma cadeira de caracteres, e ela se extente até quando eu usar outra aspa dulpa.
Se por exemplo eu escrever:
Código :
up-script=/ip firewall filter
Isso quer dizqer que eu estou colocando o valor "/ip" no parametro "up-script", o espaço indica que eu vou iniciar a declaração de outro parâmetro, que naquele caso é firewall, e esse parametro não existe, além de que ele não tem nem um = para o qual se esteja definindo um valor. A aspa dupla serve nesse sentido, você indica que esta iniciando uma cadeira de caracteres e que espacos e caracteres especiais (incluindo o = e outros) fazem parte do valor, ou seja, o correto seria:
Código :
up-script="/ip firewall filter"
Agora sim, isso quer dizer que eu estou colocando o valor "/ip firewall filter" no parametro "up-script", e que depois da segunda aspa dupla é que eu vou continuar declarando outros parametros, por exemplo o "disabled":
Código :
up-script="ip firewall filter" disabled=no
Deu pra entender?
Se sim, agora vem a questão da \. A \ serve para especificar um caracter especial. Primeiro você deve notar que, na linha de comando, uma \ no final e dando um enter, o que quer que vier na proxima linha é considerado continuação daquele comando. Ja no caso da \ aparecer DENTRO da cadeira de caracteres (ou seja, dentro do encapsulamento de duas aspas duplas), ele significa um caracter de escape.
Por exemplo, imagina que eu precise definir um valor que contenha espaços e uma aspa dentro, se eu escrever:
Código :
up-string="/ip firewall filter set [find comment="X"] disabled=no"
Vai dar problema, pois a segunda aspa dupla que esta logo depois do comment=, esta fechando a primeira aspa que abria a cadeia de caracteres, sendo que ali acabaria o valor. Porém, o que a gente quer é que a cadeira de caracteres seja considerada até a ultima aspa dupla. Para isso, a gente usa o caracter de escape logo antes de cada aspa dupla que faz parte do valor, assim:
Código :
up-string="/ip firewall filter set [find comment=\"X\"] disabled=no"
Assim, quando o interpretador ler essa linha, ele vai converter os \" em só " no valor, e vai considerar que o que segue depois continua sendo parte do valor, até que ele ache uma aspa dupla sozinha indicando o final.
Agora é que vem a parte do \r\n. No script que vai ficar la, cada comando tem que estar em nova linha, porém, uma nova linha na linha de comando não quer dizer uma nova linha na cadeia de caracteres. Para isso, eu preciso informar DENTRO da cadeia de caracteres, o ENTER ou NOVA LINHA. A gente se refere a isso, em programação geralmente, como Carriage Return, que a princípio nada mais é que o caracter 13 ta tabela ASCII ou Unicode; porém, geralmente, NOVA LINHA na realidade é representado por 2 caracteres, o caracter de Line Feed (caracter 10 da tabela ASCII) e o Carriage Return (caracter 13). Esses dois caracteres em sequencia, em praticamente TODOS os interpretadores, é aceito simplesmente como NOVA LINHA. Alguns aceitam apenas o caracter 13 como Nova Linha, outros não, precisa dos 2.
Agora é que entra a convenção, logo depois da \ você pode usar algumas letras para informar um caracter especial. \r por sua fez, é o Carriage Return, ou seja, significa o caracter 13. O \n é o caracter 10, ou seja, o Line Feed. Essa sequencia uma do lado da outra, \r\n, significa NOVA LINHA dentro da cadeia de caracteres.
O \ no final do \r\n (ficando \r\n\) é para informar que o meu ENTER não significa que eu quero executar o comando, mas que vou continuar digitando ele na próxima linha.
Deu pra entender?
Re: Script para ativar e desativar regras
Acho que entendi, só tem uma detalhe que não me ficou claro:
essa sequencia que vc me passou ai é pra colocar no new terminal né:
/tool netwatch add timeout=3s host=10.0.0.5\ up-script="\ /ip firewall mangle set [find comment=\"REGRA_1\"] disabled=no\r\n\ /ip firewall mangle set [find comment=\"REGRA_2\"] disabled=no\r\n\ /ip firewall mangle set [find comment=\"REGRA_3\"] disabled=no"\ down-script="\ /ip firewall mangle set [find comment=\"REGRA_1\"] disabled=yes\r\n\ /ip firewall mangle set [find comment=\"REGRA_2\"] disabled=yes\r\n\ /ip firewall mangle set [find comment=\"REGRA_3\"] disabled=yes"
porque eu gosto de usar direto no console pra aprender o funcionamento da regra e onde é que ela fica.....
Dai se for só pra colocar na linha ja dentro da janela do netwatch ficaria assim no up:
"/ip firewall mangle set [find comment=\"REGRA_1\"] disabled=no\r\n\ /ip firewall mangle set [find comment=\"REGRA_2\"] disabled=no\r\n\ /ip firewall mangle set [find comment=\"REGRA_3\"] disabled=no"
E assim no dow:
"/ip firewall mangle set [find comment=\"REGRA_1\"] disabled=yes\r\n\ /ip firewall mangle set [find comment=\"REGRA_2\"] disabled=yes\r\n\ /ip firewall mangle set [find comment=\"REGRA_3\"] disabled=yes"
Certo??
1 Anexo(s)
Re: Script para ativar e desativar regras
Não não, esses caracteres de escape você só usa quando for digitar no Terminal/Console.
Se você esta usando o Winbox, coloca la na janelinha como se fosse digitar uma linha de cada vez no terminal, asism:
Anexo 59979
Re: Script para ativar e desativar regras
Citação:
Postado originalmente por
inquiery
Não não, esses caracteres de escape você só usa quando for digitar no Terminal/Console.
Se você esta usando o Winbox, coloca la na janelinha como se fosse digitar uma linha de cada vez no terminal, asism:
Anexo 59979
Pronto..poronto...
Agora sim.
KKKKKKKKkkkkkkkkkkkkk
bem que achei estranho, gostei da explicação mas tava achando muito cheia de simbolos para um simples winbox....kkkkk
por isso que te perguntei..muito obrigado.
Foi util e instrutiva sua ilustrada sobre a parte de programação...imagino que se fosse via new terminal seri assim....\
Mas como gosto de usar o winbox agora ficou claro...
Uso o winbox porque gosta do raciocinio espacial que ele me permite e principalmente vejo onde estão indo parar cada regra..
Muito obrigado..estrelinha pra ti
Re: Script para ativar e desativar regras
Pessoal, boa noite,
Então, só pra ver se entendi direito de como fazer a referencia ao que quero que o script comande...........
No caso seguindo o mesmo exemplo de ter o host como referencia, se ao inves de eu querer que ele desabilite umas regras do mangle eu quisesse que ele desabilitasse uma ETH ficaria como?, assim:
/ interfaces interface ether5 set disabled=yes
???
Seria isso?, não se taeem a interface é só exemplo, qeria saber se a lógica esta correta?