Если Вы собираетесь быть выполнением большого администрирования командной строки, Вы могли бы найти полезным проверить страницы справочника для usermod (8), chfn (1), chsh (1), passwd (1), склеп (3), gpasswd (8), groupadd (8),
Я всегда использовал это:
tail -1000 /var/log/apache_access | awk '{print $1}' | sort -nk1 | uniq -c | sort -nk1
С tail
Я могу установить предел того, как далеко назад я действительно хочу пойти - хороший, если Вы не используете журнал, вращаются (по любой причине), второй, я использую awk
- так как большинство журналов является пространством, разграниченным, я оставил мой сам со способностью вытащить дополнительную информацию (возможно, какие URL они поражали, состояния, браузеры, и т.д.) путем добавления соответствующего $
переменная. Наконец дефект в uniq
это только работает в касающихся парах - IE:
A
A
A
A
B
A
A
Произведет:
4 A
1 B
2 A
Не желаемый вывод. Таким образом, мы сортируем первый столбец (в этом случае дюйм/с, но мы могли отсортировать другие столбцы), затем uniq
их, наконец отсортируйте количество, возрастающее, таким образом, я вижу самых высоких преступников.
Это кажется, что Вы посреди переосмысления fail2ban колеса.
Посмотрите на fail2ban. Это, вероятно, делает то, что Вы уже хотите, и в противном случае легко настроить.
Marco Ceppi прав относительно awk
быть лучшим инструментом для этого, но awk является также лучшим инструментом, чем sort
и uniq
так как та логика может быть перемещена в к awk
. Это не имеет большую часть значения, если Вы просто выслеживаете 1 000 строк, но если Вы хотите посмотреть на огромный много файл журнала концерта, это могут быть порядки величины быстрее для перемещения этого в к awk
.
cat /var/log/apache_access | awk '{freq[$1]++} END {for (x in freq) {print freq[x], x}}' | sort -n
сделает то, в чем Вы нуждаетесь, но намного быстрее для больших файлов. Это создает массив дюйм/с в awk, с помощью IP-адреса в качестве ключа и количества раз, дюйм/с происходит как значение.
Скорость прибывает, потому что awk делает каждый передает по данным, и делает большую часть работы, за исключением сортировки окончательного результата. Используя другой метод, если у Вас есть 1 000 000 строк в журнале передачи, awk читает те 1 000 000 строк, выкладывающих 1 000 000 дюйм/с, затем вид пробегается через все 1 000 000 дюйм/с, отправляя теперь отсортированные 1 000 000 дюйм/с в uniq, который уменьшает его вниз до намного меньшего объема данных прежде, чем дать это виду. Вместо того, чтобы передать по каналу вокруг/делающий нескольких передает 1 000 000 дюйм/с, awk делает почти все в одной передаче.
Используя 5 513 132 апачских журнала строки (1,1 концерта) на моем ноутбуке, вот сравнение скорости:
cat ./apache_access | awk '{print $1}' | sort -nk1 | uniq -c | sort -nk1
cat ./apache_access | awk '{freq[$1]++} END {for (x in freq) {print freq[x], x}}' | sort -n
-k1
избыточно, (1) существует всего один ключ (2)sort
начинает использовать первое слово в качестве ключа так или иначе. – Lekensteyn 05.05.2013, 11:23