Página 2 de 4 PrimeiroPrimeiro 1234 ÚltimoÚltimo
+ Responder ao Tópico



  1. #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.

  2. #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??



  3. #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"

  4. #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??



  5. #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?

  6. #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??