1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Bash scripting

Discussão em 'Novidades GNU/Linux & *nix World' iniciada por COLD_WAR, 22 de Novembro de 2005. (Respostas: 7; Visualizações: 789)

  1. COLD_WAR

    COLD_WAR Power Member

    Estou aqui com uma duvida em relaç~ao a bash scripting. Concretamente o que quero fazer ´e um detector de eventos, ou seja, esta a escutar um fichero de log e quando h´a uma alteraçao nesse ficheiro despoletar uma acçao.
    Actualmente estou a fazer de seguinte maneira, mas ele nao parece entrar dentro do ciclo.

    Código:
    while tail -f /var/log/xpto
    do
    echo 'aaaaa'
    tail -n 1 /var/log/asterisk/xpto > dump.txt
    done
    
    Sugestoes.

    PS -
    E j´a agora agradecia que a alguem que me ajudasse com os acentos no WindowMaker, ja´ me estou a passar..
     
  2. spastikman

    spastikman Banido

    nao te falta aí um "echo 'aaaaa' > file, ou isso é so pra ver se entra no ciclo ? ?
     
  3. spastikman

    spastikman Banido

    de qualquer das formas podes usar :

    while true
    do
    echo 'aaaaa'
    tail -n 1 /var/log/asterisk/xpto > dump.txt
    done
     
  4. COLD_WAR

    COLD_WAR Power Member

    `E um echo de debug, ´e para ver se entra no ciclo.
     
  5. COLD_WAR

    COLD_WAR Power Member

    Obg, mas nao funciona, tb ja´ experimentei com cat e tb nao da´.

    Any sugestion??
    S´o me falta mesmo o detector, pq o parser esta´ feito.

    :( :( :(
     
  6. spastikman

    spastikman Banido



    Tens a certeza ?


    É que testei aqui e entra no ciclo perfeitamente !

    Se quizeres ser mais leet podes usar o programa que o o alph fala, ou mesmo agendares isso no cron para executar por exemplo uma vez por segundo.

    btw, aconselho a pores um sleep aí no meio que isso de tentar 500000 vezes por segundo deve comer ciclos de processador sem necessidade ;)
     
  7. PrOdG

    PrOdG Power Member

    O problema aí é que tail -f /var/log/xpto não é uma condição, é um programa a correr, logo só "entra" no ciclo quando verificar verdade (e portanto o tail acabar). O meu conselho era fazeres qualquer coisa do género:

    Código:
    while [ 1 ]
    do
      TAIL="`tail -n 1 /var/log/xpto`"
      if [ "`echo $TAIL | grep "identificador do evento"`" != '' ]
      then
        echo $TAIL >> dump.txt
      fi
    done
    Tem em atenção que até chegar uma nova linha ao ficheiro de log, esta última vai sendo adicionada ao ficheiro dump. Arranja uma variável temporária para comparares a linha actual com a anterior, por exemplo ;)
     

Partilhar esta Página