[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Substituir texto no log do squid
From: |
Tiago Barcellos Peczenyj |
Subject: |
Re: [shell-script] Substituir texto no log do squid |
Date: |
Fri, 7 Dec 2007 17:16:17 -0200 |
Cristiano,
vc quer fazer algo como
1) procura quem não está autenticado
2) procura quem está usando esse ip
3) substitui o - pelo nome
se for isso, creio que existem algumas formas de faze-lo, bastaria
saber como vc mapeia esses usuarios para os ips.
ex:
~> cat squid.log
1196848451.093 32 192.168.0.39 TCP_DENIED/407 1921 GET
http://maps.google.com/maps? - NONE/- text/html
~> cat user.ip
192.168.0.39 FULANO
~> awk 'FILENAME == "user.ip" { m[$1]=$2 }
FILENAME == "squid.log" {
$(NF-1)=$(NF-1) m[$3] ; print
}' user.ip squid.log
1196848451.093 32 192.168.0.39 TCP_DENIED/407 1921 GET
http://maps.google.com/maps? - NONE/-FULANO text/html
vai consumir um pouco de memória, outra forma seria assim:
~> awk '{printf "/%s/s|NONE/-|%s|\n",$1,$2 }' user.ip
/192.168.0.39/s|NONE/-|FULANO|
~> awk '{printf "/%s/s|NONE/-|%s|\n",$1,$2 }' user.ip | sed -f - squid.log
1196848451.093 32 192.168.0.39 TCP_DENIED/407 1921 GET
http://maps.google.com/maps? - FULANO text/html
eu crio um script SED a partir do AWK. posso usar a opção (do sed)
-i.old para gerar um backup do squid.log e, então, substituir no
próprio arquivo.
ambos scripts são muitos simples, vc precisaria incrementar mais,
porém "é o que dá pra fazer"
[]´s T
On 12/7/07, Cristiano Ferrari <address@hidden> wrote:
>
>
>
>
>
>
> Pessoas, boa tarde.
>
> A dúvida é quanto a shell, mas o objetivo é resolver um problema com o
> SARG.
>
> Tenho o squid atuando como proxy de uma rede mista (win+linux) e
> utilizo o módulo NTLM para autenticação das estações windows.
> Entretanto, não sei porquê algumas conexões chegam sem autenticação,
> sendo devidamente barradas pelo squid. Por não serem autenticadas, o
> nome do usuário não fica gravado no log, como o exemplo abaixo
> (deveria estar no primeiro "-", antes do NONE):
>
> 1196848451.093 32 192.168.0.39 TCP_DENIED/407 1921 GET
> http://maps.google.com/maps? - NONE/- text/html
>
> O problema é que uso o SARG para acompanhar os acessos e não quero que
> estas conexões sejam listadas pelo número IP e sim pelo usuário. A
> solução aparentemente fácil seria preencher o sarg.usertab com uma
> listagem dos IP das estações e seus respectivos nomes de usuário, e
> ser feliz. Mas não foi bem assim. Preenchendo o usertab, o sarg
> mistura e embaralha as informações dos usuários. Postei uma dúvida há
> uns 10 dias atrás na linux-board, mas sem respostas
> (http://br.groups.yahoo.com/group/linux-board/message/26891).
>
> Na falta da solução, testei o que pude, varrendo o google atrás de uma
> resposta, além do posto na lista, mas sem sucesso.
>
> Diante do problema, resolvi partir para um "recurso técnico", a
> popular gambiarra. Tive a idéia de criar um script (viram, não disse
> que a dúvida é sobre shell script) que me permtisse varrer o log do
> squid e trocar cada ocorrência do primeiro " - " pelo nome do usuário
> vinculado ao IP existente no 3.º campo do log, de acordo com uma
> listagem previamente cadastrada em um arquivo, como a do usertab.
>
> Sei que a solução passa pelo uso de sed e/ou awk mas, honestamente,
> não tenho a menor idéia de como começar. Já fiz bastante coisas em
> shell script mas sou totalmente newbie no uso de sed/awk.
>
> Alguém tem alguma idéia de como posso fazer isso?
>
>
--
Tiago B Peczenyj
Linux User #405772
http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"