Назад | Перейти на главную страницу

Как я могу получить ТОЛЬКО IP-адреса из журналов моего сервера Apache AWStats?

У меня возникают проблемы с получением моих IP-адресов с сервера моего сайта, выходящего из системы среди множества других данных в журнале сервера. Прежде чем взломать Excel, я знаю, что есть способ сделать это, потому что я обнаружил противоположное тому, что хотел, - удаление IP-адресов из AWS:

cat web.log | awk '{$1=$2=$3=""}1' > web-no-ip.log

Пошаговая инструкция или шпаргалка для такого рода вещей было бы замечательно.

Я предполагаю, что IP-адреса имеют типичный формат X.X.X.X где X находится между [0,255]. Зная это, grep отлично справляется со своей задачей:

grep -oP '(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])(\.(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){3}' filename.txt

(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]) будет соответствовать любому числу от 0 до 255, включая ведущие нули - например, 0, 255, 019 и т. д. Однако, как написано, он будет соответствовать таким вещам, как 1.1.1.1.5 (пять октетов). Это также не отслеживает адреса IPV6.

Если вы ожидаете, что журналы будут содержать ТОЛЬКО допустимые IP-адреса, которые выглядят как X.X.X.X, и мы можем предположить, что X не будет недействительным, вы можете использовать более простое выражение:

grep -oP '\d{1,3}(\.\d{1,3}){3}' filename.txt