+ Responder ao Tópico



  1. #1

    Padrão Rodar Script na CRONTAB.

    Galera estou com um problema relativamente simples mas que não sei onde estou errando, vou explicar resumidamente.
    Tenho um servidor com 2 links dedicados, criei um script para verificar se o link1 e link2 estão UP caso um caia o outro mude, o script funcionou tudo certinho porém necessito que ele rode de minuto em minuto para fazer essa verificação.

    Coloquei ele na cron na seguinte forma:

    */1 * * * * root /home/fernando/internet.sh

    Porém não tem cristo que faça isso rodar. Rodando ele diretamente/manualmente tudo funciona direitinho.

    Lembrando que o script usa comandos de root portanto ele necessita ser rodado com as devidas permissoes.

    Desde já agradeço a ajuda.

    Obrigado.

  2. #2

    Padrão Re: Rodar Script na CRONTAB.

    Não seria?
    0 0 * * * sh /home/fernando/internet.sh

  3. #3

    Padrão Re: Rodar Script na CRONTAB.

    Eu necessito que ele rode a cada 1 minuto, não entendi o por que do 0 0 no início, mas enfim, testei assim e não funcionou também! Mesmo assim agradeço a ajuda.

  4. #4

    Padrão Re: Rodar Script na CRONTAB.

    Talvez, este artigo possa lhe ser útil.

    O o o no início foi apenas um exemplo.

    veja:

    http://www.devin.com.br/crontab/

  5. #5

    Padrão Re: Rodar Script na CRONTAB.

    Bastos.

    Sei como funcionam as sintaxes da cron e tudo mais. Tenho outros comandos funcionando perfeitamente nesta Cron só não estou entendendo por que este comando não quer funcionar.

  6. #6

    Padrão Re: Rodar Script na CRONTAB.

    Ok.
    Sou novo no fórum e a minha intenção só é ajudar.

    Tentou dessas formas?

    0-59/1 * * * * root /home/fernando/internet.sh
    0-59/1 * * * * sh /home/fernando/internet.sh
    */1 * * * * sh /home/fernando/internet.sh

  7. #7

    Padrão Re: Rodar Script na CRONTAB.

    Citação Postado originalmente por skide Ver Post
    Galera estou com um problema relativamente simples mas que não sei onde estou errando, vou explicar resumidamente.
    Tenho um servidor com 2 links dedicados, criei um script para verificar se o link1 e link2 estão UP caso um caia o outro mude, o script funcionou tudo certinho porém necessito que ele rode de minuto em minuto para fazer essa verificação.

    Coloquei ele na cron na seguinte forma:

    */1 * * * * root /home/fernando/internet.sh

    Porém não tem cristo que faça isso rodar. Rodando ele diretamente/manualmente tudo funciona direitinho.

    Lembrando que o script usa comandos de root portanto ele necessita ser rodado com as devidas permissoes.

    Desde já agradeço a ajuda.

    Obrigado.
    crontab -e
    */1 * * * * /home/fernando/internet.sh

    ctrl + x
    salva

    invoke-rc.d cron restart

  8. #8

    Padrão Re: Rodar Script na CRONTAB.

    Pois é Perigoso.

    Tentei dessa forma que com certeza está correta, depois de tudo que pesquisei.

    Porém ele não executa, esse meu script, depois de executar as ações ele escreve em um .log.
    Rodo ele manualmente funciona tudo certo e ele retorna o resultado no .log, porém com o serviço nada acontece.

    Muito estranho, não faço nem ideia do que possa ser!

  9. #9

    Padrão Re: Executar script agendado com crontab

    Citação Postado originalmente por skide Ver Post
    ...ele não executa, esse meu script, depois de executar as ações ele escreve em um .log.
    Rodo ele manualmente funciona tudo certo e ele retorna o resultado no .log, porém com o serviço nada acontece.

    Muito estranho, não faço nem ideia do que possa ser!
    O crontab roda com outro usuário e, por consequência, com outras variáveis de ambiente, o que explica "funcionar na mão", e agendado não. Verifique se o seu script possui "shebang", pois do contrário, precisará da variável "SHELL" declarada explicitamente ou informação de caminhos absolutos para os arquivos relacionados (retornado do comando "whereis").

  10. #10

    Padrão Re: Rodar Script na CRONTAB.

    Pois trober.

    Meu script é o seguinte:
    Código :
    #!/bin/bash
    # Observacoes
    #
    # Esse script prove de forma simples e eficiente uma redundancia entre
    # dois links de internet (sem load balance), sendo um link principal e o outro de backup.
    #
     
     
    # Gateway ativo
    # Esse comando vefirica qual o link esta como padrao, se o link tiver como padrao o GW1
    # ele vai pingar no ip externo e se responde e porque o link esta normal e nao faz mais nada
    export LC_ALL=C
    export PATH=/bin:/usr/bin:/sbin:/usr/sbin
     
     
    GWUP=`ip route show | grep ^default | cut -d " " -f 3`
     
     
    # Gateway Principal
    GW1=177.72.66.185; export GW1 # Substitua pelo gateway do seu link principal
     
     
    # Gateway Slave
    GW2=200.18.45.201; export GW2 # Substitua pelo gateway do seu link backup
     
     
    # Etapa 1 = Verifica se o gateway e o principal, ser for ele vai pra etapa 2 se nao for ele vai pra etapa 2.1
    if [ $GWUP == $GW1 ]; then
     
     
    # Etapa 2 = Informa com log que a rota principal e o gateway 1 e vai para a etapa 6
       echo "`date` - Rota default Principal! " >> redundancia.log
     
     
    else
     
     
    # Etapa 2.1 = Informa com log que a rota principal e o gateway 2 e vai para a etapa 3
       echo "`date` - Rota default Slave! " >> redundancia.log
     
     
    # Etapa 3 = Verifica a disponibilidade do link com gateway 1
       echo "`date` - Verificando a disponibilidade do link ZUMPNET..." >> redundancia.log
       route add -net 0.0.0.0 gw $GW1
       ping -I eth1 200.160.2.3 -c 5 -A > /dev/null
       if [ $? -eq 0 ]; then
     
     
    # Epata 4 = Se o gateway principal voltou ele exclui a rota do gateway 2 para manter o gatewy 1 ativo
          echo "`date` - Link pricipal voltou!" >> redundancia.log
          route del -net 0.0.0.0 gw $GW2
          exit 0
       else
    # Etapa 5 = Agora se o gatewy principal nao voltou, ele deleta a rota o gatewy 1 e mantem a rota do gateway 2
          echo "`date` - Link principal ainda nao voltou..." >> redundancia.log
          echo "`date` - Link de backup sera mantido." >> redundancia.log
          route del -net 0.0.0.0 gw $GW1
          exit 0
     
     
       fi
     
     
    fi
     
     
    # Etapa 6 = Testando se o link principal com gateway 1 esta normal, se tiver ele vai pra etapa 7
    echo "`date` - Testando Link Principal..." >> redundancia.log
    ping -I eth1 200.160.2.3 -c 5 -A > /dev/null
     
     
    if [ $? -eq 0 ]; then
     
     
    # Etapa 7 = Diz que o link principal com gateway 1 esta normal e finaliza
       echo "`date` - Link Principal UP!" >> redundancia.log
     
     
    else
    # Etapa 8 = Diz que o link principal nao esta funcionado e deleta a rota do gateway um e adiciona rota ao gateway 2
       echo "`date` - Link Principal DOWN..." >> redundancia.log
       echo "`date` - Subindo Link de backup..." >> redundancia.log
       route del -net 0.0.0.0 gw $GW1
       ip route add default via $GW2
     
     
    fi
     
     
    sleep 5

    Acha que tem alguma coisa a ver com o que você mencionou a cima?

    Desde já agradeço a sua ajuda.

  11. #11

    Padrão Re: Rodar Script na CRONTAB.

    Galera agradeço a ajuda de todos, mas consegui resolver o problema. O erro estava no arquivo de log, no script eu não usei o caminho absoluto e como isso roda em CRON ele nao estava escrevendo no arquivo de forma correta(Não achava o caminho do arquivo). Tudo funcionando agora. Obrigado pela ajuda de todos.