Как грепнуть все ip из acces-лога

Постановка задачи.

Нужно получить все ip-адреса, которые имеются в access.log. Должна быть возможность считать кол-во ip-адресов, т.е. вывести количество уникальных ip.

Для чего это может быть нужным? Например, если api-сервер переезжает на новый адрес. На старый сервер по-прежнему приходят какие-то http-запросы. Нам нужно найти и вычленить все ip, которые до сих пор стучатся.

Решение задачи. 

Берём linux консоль в руки и получаем все уникальные ip адреса из лога:

less /var/log/nginx/access.log | cut -d' ' -f1 | sort | uniq

Разберём подробно:

  1. less — утилита для вывода содержимого файла /var/log/nginx/access.log. Указываем путь до нужного access-лога.
  2. cut -d' ' -f1 — разбиваем строку на подстроки разделителем "пробел". Разделитель указывается флагом -d. Флагом -f указываем порядковый номер поля, которое будет отображаться в выводе. В данном случае «1» - первое поле, это и есть ip-адресс.
  3. sort  — сортировка строк по порядку. Команда сгруппирует одинаковые строки "рядом". Команда sort необходима для корректной работы следующей команды - uniq.
  4. uniq— выведет только уникальные строки. Т.е. в результате будут только уникальные ip-адреса.

Улучшим команду, добавив вывод количества ip-адресов. Для вывода количества, нужно добавить флаг (от слова count) к команде uniq:

less /var/log/nginx/access.log | cut -d' ' -f1 | sort | uniq -c

Результат работы команды будет в таком виде, сначала количество использований ip, затем сам ip:

less /var/log/nginx/access.log | cut -d' ' -f1 | sort | uniq -c
7 155.55.55.55
1005000 155.55.55.56
520 155.44.44.44
955 155.33.33.33

Получить все ip-адреса из лога

Есть другой вариант с помощью регулярных выражений:

sed -e 's/\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\).*$/\1/' -e t -e d access.log | sort | uniq -c

Выведет лог в таком же виде:

  1. количество использований ip
  2. ip-адресс

Но, такой вариант с поиском ip по регулярному выражению формата ipv4 будет более затратным по вычислительным и временным ресурсам.

 

 
 
 
 

icon Комментарии 0

Ваш комментарий к статье.. (для авторизованных)

ctrl+enter

icon Вход в систему

зарегистрироваться
НОВЫЕ ПОЛЬЗОВАТЕЛИ