У меня есть команда ниже, которая распечатывает хиты, IP-адрес хоста (локальный сервер/балансировщик нагрузки) и внешний IP-адрес (тот, который вызывает хит). Я также хотел бы распечатать информацию об агенте пользователя вместе с предоставленной информацией. Как это может быть достигнуто, пожалуйста?
cat access.log | sed -e 's/^\([[:digit:]\.]*\).*"\(.*\)"$/\1 \2/' | sort -n | uniq -c | sort -nr | head -20
То, что я получаю, ниже ...
Хиты, IP-адрес хоста, внешний IP-адрес
Что бы я хотел, если можно...
Хиты, IP-адрес (пример хоста), Внешний IP-адрес (вызвавший попадание), Агент пользователя
10000 192.168.1.1 148.285.xx.xx Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/98 Safari/537.4
Ниже прилагается выдержка из журнала
192.168.xxx.x - - [10/Jun/2019:12:40:15 +0100] "GET /company-publications/152005 HTTP/1.1" 200 55848 "google.com" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6" "xx.xx.xx.xx"





Если GNU AWK (gawk) доступен, попробуйте следующее:
awk -v FPAT='(\"[^"]+\")|(\\[[^]]+])|([^ ]+)' '
{ gsub("\"", "", $9); gsub("\"", "", $10); print $1 " " $10 " " $9 }
' access.log | sort -n | uniq -c | sort -nr | head -20
FPAT представляет регулярное выражение каждого поля в access.log. То есть: «строка в двойных кавычках», «строка в квадрате».
скобки" или "строка, разделенная пробелами".access.log на поля: $1 для host IP,
$10 вместо external IP и $9 вместо user agent.Приятно знать, что это работает. Что касается вашего вопроса, AWK не имеет встроенной команды для поиска домена. Возможно, вам придется использовать внешнюю команду как nslookup.
Спасибо, tshiono... так что потом мне нужно будет запустить это как отдельную команду?
Это может зависеть от того, как вы хотели бы отобразить конечный результат. Если вы можете опубликовать пару примеров строк журнала и желаемый результат, я могу вам помочь.
Спасибо, это, кажется, работает отлично! Отдельный вопрос... знаете ли вы, как я потенциально могу выполнить поиск домена по IP-адресу, представленному в качестве дополнения к этой команде
awk?