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 <[EMAIL PROTECTED]> 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"
