Нужна срочная помощь по 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