Нужна срочная помощь по grep для выполнения запроса в суд

Я не являюсь системным администратором, но у меня небольшой веб-сайт, и сегодня я получил запрос в суд от полиции, чтобы соблюсти требования, мне нужно извлечь IP-адреса из журналов нашего сервера в течение необходимого времени.

Это моя проблема:

1

У меня есть 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"

Файл содержит более 500 таких строк

Это вывод, который я ожидаю: 85.40.142.111, 84.20.132.141 и другие ips.

2

И у меня есть log2.txt, который имеет точно такой же формат

Мне нужно вывести IP-адреса из этого журнала, например, 85.40.142.111, 81.02.32.61,

3

Мне нужно использовать результаты вывода из log1 и сопоставить их с log2, и если один IP повторяется в обоих журналах, вывести его. Из приведенных мной примеров, что IP будет 85.40.142.111.

Не могли бы вы помочь?

2 ответа

Я бы предложил использовать cut, а не 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

Если IP-адрес, который вы ищете, является вторым в каждой строке, а не первым, замените '-f1' на '-f2'.

НТН.

Если все, что вы хотите, это список 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
Другие вопросы по тегам