#  > Desenvolvimento >  > Linguagens de Programação >  >  Como criar um shell script para monitoramento de log(url)

## nozey

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:



```
#!/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

----------


## lucianogf

cara...

mesmo vc usando o modem como router vc ainda pode usar o iptables sem nenhum problema...

vc disse q quer monitorar uma url, vc tem o squid instalado e configurado ???

se tiver eh melhor ainda, assim dah pra monitorar em tempo real ou em tempo programado...

valew

----------


## nozey

Como posso continuar usando o iptables? Porque aqui nenhum tráfegochega no pc ... tudo fica no router.

E a única url que quero monitorar é a do log do modem. Não há necessidade do squid

----------


## black_burn

voce pode fazer uma regra NAT no seu modem, redirecionando todo o trafego para sua maquina, dae com isso voce pode usar o iptables para fazer oque bem intender..

www.abusar.org

entre nesse site e va ateh a seção de modem, la tem como configurar seu modem para fazer NAT, ou "liberar portas", que eh na verdade um NAT.



[]'s

----------


## nozey

Se eu redirecionar todo o tráfego pra minha máquina, eu vou ter que usar o iptables para compartilhar a conexão para os outros pcs da rede, e consequentemente terei que deixar meu pc 24hrs/dia ligado.

Eu tive que mudar para router justamente por isso. A conta de energia tava vindo muito alta, e meu pai "sugeriu" que eu começasse a desligar o pc de vez em quando(eu tinha um uptime de mais de mês =\ ).

Enfim ... tive que passar a utilizar o modem como router, e agora estou tentando monitorar a página de log do mesmo.

Alguém tem uma solução para esse shell script?

----------


## lucianogf

cara...

será q ele não tah dando erro pq expira o tempo do login no modem??

ou pra acessar esta pagina de log's nao precisa efetuar login ?

----------


## nozey

Não precisa de login. 

Ele dá erro, porque eu to usando > e não >> ná hora de redirecionar o conteúdo da url pro arquivo. Ou seja, ele zera o conteúdo do arquivo a cada 10seg(tempo do sleep), que é quando está ocorrendo o erro. Apesar de usar >> ser uma solução, ela não é viável, pelo simples fato de que o tamanho do arquivo gerado estava ficando absurdo.

Acho que só seria viável utilizar o *>>*, se eu encontrasse uma maneira de comparar o que há na url, com o que já existe no arquivo, e só jogar para ele as entradas novas. Mas como fazer isso?

----------


## lucianogf

cara...

pelo que entendi vc então não quer este log gravado em um arquivo para armazenamento, se for isso vc poderia redirecionar os log's para um terminal

> /dev/tty12 

valew

----------

