Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. #1

    Padrão Script para ativar e desativar regras

    Pessoal, bom dia,
    Precisava de uma dica de vcs no seguinte:

    tenho um conjunto de regras no mangle que gostaria de condicionar o funcionamento delas ao ping de um ip conectado a eth da minha RB... precisava que quando o ip responde ao ping elas fiquem ativas e vice-versa...
    Deve existir algum script pra fazer isso, mas não tenho muito conhecimento sobre...
    Alguém no help??

  2. #2

    Padrão Re: Script para ativar e desativar regras

    Tools -> Netwatch não te serve?

    Eu costumo colocar comentarios nas regras, tipo a regra de mangle com comentario "REGRA 1" da pra desabilitar assim

    Código :
    /ip firewall mangle set [find comment="REGRA 1"] disabled=yes

  3. #3

    Padrão Re: Script para ativar e desativar regras

    Citação Postado originalmente por inquiery Ver Post
    Tools -> Netwatch não te serve?

    Eu costumo colocar comentarios nas regras, tipo a regra de mangle com comentario "REGRA 1" da pra desabilitar assim

    Código :
    /ip firewall mangle set [find comment="REGRA 1"] disabled=yes
    Pode até servir..mas cmo disse, não conheço o funcionamento dessa ferramento do Mk, poderia me explicar melhor...lhe agradeço

  4. #4

    Padrão Re: Script para ativar e desativar regras

    Não tem mistério.

    É só clicar no "+" para adicionar la na janelinha que abrir em Tools->Netwatch.

    Você vai ter um campo para colocar o IP que quer pingar.
    E vai ter duas guias, um "Up", que é o script que vai executar quando o IP voltar a responder depois de ter "caído", e uma "Down" que é o script que vai executar quando o IP parar responder.

    Da pra adicionar vários itens para ficar monitorando vários IPs.

  5. #5

    Padrão Re: Script para ativar e desativar regras

    Então...
    Tava olhando agora, acho que entendi... no caso se fosse pra habilitar ficaria assim:??


    /ip firewall mangle set [find comment="REGRA 1"] enabled=yes

    correto??

    Só uma pargunta: o botão é anable e disable, antão porque esse "D" no final.. ta certo??

  6. #6

    Padrão Re: Script para ativar e desativar regras

    Caro colega se for habilitar ficara assim:

    /ip firewall mangle set [find comment="REGRA 1"] disabled=no

    Citação Postado originalmente por gabrielest Ver Post
    Então...
    Tava olhando agora, acho que entendi... no caso se fosse pra habilitar ficaria assim:??


    /ip firewall mangle set [find comment="REGRA 1"] enabled=yes

    correto??

    Só uma pargunta: o botão é anable e disable, antão porque esse "D" no final.. ta certo??

  7. #7

    Padrão Re: Script para ativar e desativar regras

    Bom dia @gabrielest

    É quase isso, mas ao invés de "enabled=yes" é "disabled=no".
    Não te preocupa com discrepancias em nomenclaturas entre comandos do terminal e nomes na GUI do Winbox. Acontece.

    O "d" no final de "disabled" ou "enabled" é pra colocar o verbo no particípio, a a mesma diferença, em português de "desabilitar" (disable) para "desabilitado" (disabled). Mas não te liga nissas diferenças não.

    A única coisa que você precisa sempre lembrar é que você não usa "enabled" para dizer se ta habilitada ou não uma regra do RouterOS. Ao invés disso, você sempre usa "disabled" para dizer se a regra está disabilitada ou não.

  8. #8

    Padrão Re: Script para ativar e desativar regras

    Ok, entendi,

    Então basicamente é:

    para habiliar

    /ip firewall mangle set [find comment="REGRA 1"] disabled=no

    e


    /ip firewall mangle set [find comment="REGRA 1"] disabled=yes

    para desabilitar
    correto??

    + algumas perguntas perguntas:

    1º- tem que ter sempre a / no inicio para ele poder fazer a procura certo?
    2º- no lugar de REGRA 1 tem que estar o coment da regra sempre entre apóstrofos e de preferencia um ctrl+c - ctrl+v pra ter certeza que esta escrita igualzinho correto?
    3º- apesar das abas up/down no netwatch estarem separadas, se eu quiser que pro mesmo host ele tem + de uma atitude quando estiver down ou up como deveria proceder:

    a- acrescentando mais regras:
    b- na mesma regra coloco os outros scripts?

    em ambos os casos tanto faz a órdem ou ele (routerOS) vai ler sequencialmente?? tipo, se colocar mais de um regra ele vai tomando as atitudes da primeira pra ultima e nos scripts se colocar + de 1 ele vai tomando as atitudes do primeiro por ultimo??


    Por exemplo, ocmpletem ai pra mim só pra ver se entendi por favor:

    No caso assim:

    Host: 10.0.0.5

    no Mangle teriam:

    REGRA 1
    REGRA 2;
    REGRA 3;

    Caindo preciso que desabilite, voltando que habiliet de novo, como fariam??

  9. #9

    Padrão Re: Script para ativar e desativar regras

    1º - Na realidade o / é só para especificar o ponto de partida do comando. Quando você recem inicia um script, ou abre um terminal novo, vc inicia no "/", e você pode entrar na sessão que quiser. Se por exeplo você digitar "ip" e der enter, vai entrar nessa seção. Digamos que agora você quer entrar no firewall, basta digitar "firewall" e dar enter. Você então vai estar na seção "/ip/firewall". Digamos que agora você quer entrar nas configurações de rotas, você vai precisar colocar o "/" na frente, porque "route" não existe dentro de "/ip/firewall", a seção "route" está no "/", então vc precisa digitar "/route".

    Em scripts sempre costumamos escrever caminhos completos, mas não é necessário. Como o script inicia no "/", se você simplesmente omitir o barra inicial vai funcionar tb.

    2º - Sim, tudo certo o que você falou.

    3º - Pode ser tudo na mesma regra. Vai digitando varias linhas no "Up" e/ou no "Down", ele vai executar todas. Não tem porque criar várias regras para o mesmo host.

    Exemplo:
    Código :
    /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"

  10. #10

    Padrão Re: Script para ativar e desativar regras

    Citação Postado originalmente por inquiery Ver Post
    1º - Na realidade o / é só para especificar o ponto de partida do comando. Quando você recem inicia um script, ou abre um terminal novo, vc inicia no "/", e você pode entrar na sessão que quiser. Se por exeplo você digitar "ip" e der enter, vai entrar nessa seção. Digamos que agora você quer entrar no firewall, basta digitar "firewall" e dar enter. Você então vai estar na seção "/ip/firewall". Digamos que agora você quer entrar nas configurações de rotas, você vai precisar colocar o "/" na frente, porque "route" não existe dentro de "/ip/firewall", a seção "route" está no "/", então vc precisa digitar "/route".

    Em scripts sempre costumamos escrever caminhos completos, mas não é necessário. Como o script inicia no "/", se você simplesmente omitir o barra inicial vai funcionar tb.

    2º - Sim, tudo certo o que você falou.

    3º - Pode ser tudo na mesma regra. Vai digitando varias linhas no "Up" e/ou no "Down", ele vai executar todas. Não tem porque criar várias regras para o mesmo host.

    Exemplo:
    Código :
    /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"
    Perfeito amigo, ajudas-te muito, mas diga-me:
    - porque do \r\n\ no fim da primeira e segunda regra e na terceira não???, seria tipo pra mandar ele ler a linha de baixo também??

  11. #11

    Padrão 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?

  12. #12

    Padrão 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??

  13. #13

    Padrão 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:
    Clique na imagem para uma versão maior

Nome:	         Sem título.png
Visualizações:	385
Tamanho: 	22,1 KB
ID:      	59979

  14. #14

    Padrão Re: Script para ativar e desativar regras

    Citação Postado originalmente por inquiery Ver Post
    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:
    Clique na imagem para uma versão maior

Nome:	         Sem título.png
Visualizações:	385
Tamanho: 	22,1 KB
ID:      	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

  15. #15

    Padrão 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?

  16. #16

    Padrão Re: Script para ativar e desativar regras

    Sim, nas versões mais novas do RouterOS, pode referenciar interfaces pelo nome que ele entende. Mas o segundo "interface" não ta certo. Você pode usar "ethernet" ali se quiser, ou "wireless" se a interface que for habilitar/desabilitar for wireless. Mas não precisa. Outra coisa, o "set" vem antes da definição do item que vai sofrer a alteração. Assim:

    Código :
    /interfaces set ether5 disabled=yes

  17. #17

    Padrão Re: Script para ativar e desativar regras

    Ok,
    Mas pelo que tinha entendido de como fazer a descrição, funciona +/- como o endereço no windows explorer (por exemplo), ou seja, em árvore, dai o menu que acessa é Interfaces - ethernet - dai o set, então ficaria assim;

    / interfaces ethernet set ether5 disabled=yes

    correto?

    se eu quisesse me referir a uma bridge seria

    / bridge set bridge1 disabled=yes

    Correto?

    Só gostaria de entender se interpretei corretamente como descrever o endereço da função.

  18. #18

    Padrão Re: Script para ativar e desativar regras

    É praticamente isso gabrielest.

    Porém, a árvore no terminal é formada por recursos, para referência a recursos, do RouterOS. Não é "exatamente" igual a uma árvore de diretórios, mas é bem parecida. Para entender bem, você realmente pode pensar nela dessa forma, só tem que considerar algumas diferenças.

    Por exemplo, o sub-menu "interface" é onde se encontram todas as interfaces do RouterOS. Dentro desse sub-menu, por conseguinte, se encontram além de, digamos assim, "sub-recursos", TODAS as interfaces existentes, inclusive as bridges que você citou. Além disso, o Winbox difere um pouquinho da linha de comando; não existe "/bridge" por exemplo, "bridge" é um sub-recurso que fica dentro do sub-menu "interface".

    Você pode imaginar que, o sub-menu interface é um diretório com TODOS as interfaces, como se fossem arquivos, e que "bridge", "ethernet", "vlan" e etc são sub-diretórios, dentro dos quais você não encontra arquivos físicos, mas apenas referências a arquivos no diretório pai (interface) que dizem respeito as características daquele diretório. Por exemplo, dentro de "/interface ethernet" você tem vários arquivos que são referências (links simbolicos no Linux) a interfaces que estão dentro de "/interface" que são do tipo "ethernet".

    Ou seja, a interface "ether1" por exemplo, existe tanto dentro de "/interface" quando dentro de "/interface ethernet". Assim como a interface "wlan1" existe tanto dentro de "/interface" quando dentro de "/interface wireless".

  19. #19

    Padrão Re: Script para ativar e desativar regras

    Citação Postado originalmente por inquiery Ver Post
    É praticamente isso gabrielest.

    Porém, a árvore no terminal é formada por recursos, para referência a recursos, do RouterOS. Não é "exatamente" igual a uma árvore de diretórios, mas é bem parecida. Para entender bem, você realmente pode pensar nela dessa forma, só tem que considerar algumas diferenças.

    Por exemplo, o sub-menu "interface" é onde se encontram todas as interfaces do RouterOS. Dentro desse sub-menu, por conseguinte, se encontram além de, digamos assim, "sub-recursos", TODAS as interfaces existentes, inclusive as bridges que você citou. Além disso, o Winbox difere um pouquinho da linha de comando; não existe "/bridge" por exemplo, "bridge" é um sub-recurso que fica dentro do sub-menu "interface".

    Você pode imaginar que, o sub-menu interface é um diretório com TODOS as interfaces, como se fossem arquivos, e que "bridge", "ethernet", "vlan" e etc são sub-diretórios, dentro dos quais você não encontra arquivos físicos, mas apenas referências a arquivos no diretório pai (interface) que dizem respeito as características daquele diretório. Por exemplo, dentro de "/interface ethernet" você tem vários arquivos que são referências (links simbolicos no Linux) a interfaces que estão dentro de "/interface" que são do tipo "ethernet".

    Ou seja, a interface "ether1" por exemplo, existe tanto dentro de "/interface" quando dentro de "/interface ethernet". Assim como a interface "wlan1" existe tanto dentro de "/interface" quando dentro de "/interface wireless".
    Perfeito,
    E no caso de uma bridge ficaria assim então:

    / interface bridge set bridge1 disabled=yes

    Mas isso acontece só com as interfaces ou com alguma outra área do routerOs também...??
    Tinha percebido que a parte de interfaces é meio que um resumo de onde esta tudo referente a elas...mas os outros menus estão bem divididos e elaborados, a exmplo do IP.

  20. #20

    Padrão Re: Script para ativar e desativar regras

    Pode ser só:

    Código :
    /interface set bridge1 disabled=yes

    Pois o sub-menu "interface" possui TODAS as interfaces dentro dele, inclusive as bridges. Mas claro que você pode referenciar ela com "/interface bridge" também, caso você queira uma "consistência interpretativa" melhor. Mas acho que isso só seria interessante dentro de um script mais complexo.


    Bom, o "ping" por exemplo, é uma ferramente que está no "/", porém, no Winbox, ele ta dentro de "tool".