Ver Resposta Única
Antigo 29-10-2005, 22:26   #1 (permalink)
nozey
 
Avatar de nozey
 
Registrado em: Apr 2004
Localização: Portugal
Posts: 181
Agradeceu: 0
Agradecido 0 vez(es) em 0 Posts
Reputação: 0
nozey
Padrão Como criar um shell script para monitoramento de log(url)

Estou precisando criar um shell script para monitorar "linha a linha" uma url. Assim que tive esse problema logo pensei: tail -f ... e logo quebrei cara =\

Tentei algumas coisas, e como não tive sucesso, cá estou eu.

O problema é o seguinte: Passei a usar um adsl router, e infelizmente não posso mais usufruir do iptables(inclusive dos logs do mesmo). Em compensação o router possui um firewall, e uma página com o log do mesmo. É exatamente esta a página que quero logar.

Cada linha desta página tem o seguinte formato:

0000-000-000 66:66 |Firewall |D:19:0 TCP 666.6.6.6:666 -> 666.66.6.66:66666 len=1492 id=49537 DF=1 MF=0 byte-off=0

O tamanho dos campos variam.


Eu tentei o seguinte:

Código:
#!/bin/bash

Url=http://ip-do-router/log.htm
Arquivo=/tmp/tal

while true; do
        Tmp=`cat $Arquivo`
        lynx -dump -width=800 $Url | tr -s "\n" | cut -d"|" -f2,3 | tr -s " " | grep -v "BUTTON" > $Arquivo
        sleep 10   
done
Isso me gera um arquivo onde cada linha é +/- assim:
Firewall |D:19:0 TCP 666.6.6.6:666 -> 666.66.6.66:66666 len=1492 id=49537 DF=1 MF=0 byte-off=0

Rodei o script, e então dei um: tail -f /tmp/tal

Ele funciona, mas logo em seguida o tail é quebrado:

tail: /tmp/tal: file truncated

Provavelmente isso aconteceu pq o lynx tentou jogar o conteúdo da url pro arquivo, enquanto o tail lia o mesmo arquivo.

Daí eu queria saber como resolver isso... alguém tem alguma sugestão, ou uma melhor forma de se fazer isso?

EDIT: ajeitar o título
nozey está offline