Precisa de ajuda com o grep para atender com urgência à solicitação de intimação

1

Eu não sou um administrador de sistemas, mas gerenciei um pequeno site e hoje recebi uma solicitação de intimação da polícia, para cumprir a exigência de extrair endereços IP de nossos registros do servidor por tempo necessário.

Este é o meu problema:

1

Eu tenho log1.txt

/var/log/lighttpd/access.log.1.gz:84.20.132.141 180.175.44.143 - [28/Apr/2011:09:23:30 -0500] "POST /base/script.php HTTP/1.1" 200 158 "http://ref/,http://ref/" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.28 Safari/530.5"
/var/log/lighttpd/access.log.1.gz:85.40.142.111 180.175.44.143 - [28/Apr/2011:09:23:30 -0500] "POST /base/script.php HTTP/1.1" 200 158 "http://ref/,http://ref/" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.28 Safari/530.5"

O arquivo contém mais de 500 dessas linhas

Esta é a saída que estou esperando: 85.40.142.111, 84.20.132.141 e outros ips.

2

E eu tenho log2.txt que tem exatamente o mesmo formato

Também preciso enviar IPs desse log, por exemplo 85.40.142.111, 81.02.32.61,

3

Eu preciso usar os resultados de saída do log1 e associá-los ao log2 e se um IP repetir nos dois logs, em seguida, enviá-lo. Dos exemplos que forneci, esse IP seria 85.40.142.111.

Você poderia ajudar?

    
por Andrey 30.04.2011 / 10:39

2 respostas

2

Eu sugeriria usar corte, não grep:

cut -d\ -f1 log1.txt | sort | uniq > ip1.txt
cut -d\ -f1 log2.txt | sort | uniq > ip2.txt
grep -f ip2.txt ip1.txt

Se o IP que você está procurando for o segundo em cada linha, em vez do primeiro, substitua '-f1' por '-f2'.

HTH.

    
por 30.04.2011 / 10:56
2

Se tudo que você quer é uma lista de endereços IP

#!/bin/bash
cut -d ' ' -f1 log1.txt | cut -d ':' -f2 | sort | uniq >log1.out
cut -d ' ' -f1 log2.txt | cut -d ':' -f2 | sort | uniq >log2.out
while read IP
do
    sed -n /$IP/p log2.out
done <log1.out
    
por 30.04.2011 / 11:12