Bash scripting

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

:( :( :(
 
COLD_WAR disse:
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.

:( :( :(



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 ;)
 
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 ;)
 
Back
Topo