shell-script-pt
[Top][All Lists]
Advanced

[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"


reply via email to

[Prev in Thread] Current Thread [Next in Thread]