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

Я иногда использую эту строку в своем терминале для наблюдения, какой агент пользователя использует мой сервер больше.

cat /var/log/apache2/access.log | awk -F\" '{print $6}' | sort | uniq -c | sort -n

Сканирует access.log и шоу в порядке возрастания агенты пользователя, которые оно несколько раз находило.

Результат - что-то вроде этого:

  10283 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1
  23247 Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36
  40063 MauiBot (crawler.feedback+dc@gmail.com)
 143724 Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
 192741 Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)

Я понятия не имею, как это работает, так давно я нашел его где-нибудь, или кто-то дал мне дату, я не помню.

Так или иначе, возможно, делают то же самое, но заказывающий для IP?

0
задан 25 July 2018 в 19:28

2 ответа

Я думаю, что IP на первом столбце в журнале, попробовать

awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -n
0
ответ дан 28 October 2019 в 06:57

Оценка от того, что Вы используете awk -F \" { print $6} там, это появляется как объединенный формат журнала, который должен иметь IP-адрес в поле $1. Оттуда, мы можем просто сделать uniq в awk, затем объединить это с сортировкой индексов в ассоциативных массивах.

С насмешкой access.log файл как это:

127.0.0.1 - - [05/Feb/2012:17:11:55 +0000] "GET / HTTP/1.1" 200 140 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.5 Safari/535.19"
192.168.0.2 - - [05/Feb/2012:17:11:55 +0000] "GET / HTTP/1.1" 200 140 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.5 Safari/535.19"
127.0.0.1 - - [05/Feb/2012:17:11:55 +0000] "GET / HTTP/1.1" 200 140 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.5 Safari/535.19"

awk код должен быть как так:

$ awk '{!a[$1]++}; END{n=asorti(a,sorted);for(i=1;i<=n;i++) print sorted[i],":",a[sorted[i]]}' access.log
127.0.0.1 : 2
192.168.0.2 : 1

Для числовой сортировки по количеству записей для каждого IP-адреса мы можем просто придерживаться sort в конце:

$ awk '{!a[$1]++}; END{for(val in a) print val,":",a[val];}' access.log | sort -n --field-separator=":" -k 2,2

Конечно, необходимо использовать /var/log/apache2/access.log как Ваш фактический входной файл.

0
ответ дан 28 October 2019 в 06:57

Другие вопросы по тегам:

Похожие вопросы: