Основы Bash
Объединяйте команды в конвейеры и напишите свой первый многоразовый Bash-скрипт.
- linux.bash
Задания
1. Посчитайте ошибки10 очк.
Сколько запросов в
~/data/access.logвернули код ответа 404?2. Найдите сканер10 очк.
С какого IP-адреса пришло больше всего ответов 404? (Кто-то перебирает файлы.)
3. Сохраните уникальных посетителей15 очк.
Запишите отсортированный список уникальных IP-адресов клиентов (по одному на строку) в
~/report/ips.txt.4. Автоматизируйте20 очк.
Создайте исполняемый скрипт
~/bin/count404.sh, который выводит только количество ответов 404 в~/data/access.log. Его запускают от имениstudentиз любого каталога, поэтому используйте абсолютные пути (или$HOME).
Вводные и справка по командам
Настоящая сила оболочки — в композиции: маленькие инструменты, соединённые конвейерами (|).
grep "шаблон" файл | sort | uniq -c | sort -rn | head
Журнал вашего веб-сервера лежит в ~/data/access.log.
Справка по командам
| Команда | Что делает |
|---|---|
grep '<текст>' <файл> | строки, содержащие текст (кавычки сохраняют пробелы) |
wc -l | считает строки |
cut -d' ' -f1 | первое поле, если поля разделены пробелом |
sort / sort -u | сортировка / сортировка без повторов |
uniq -c | считает подряд идущие одинаковые строки (сначала sort) |
sort -rn | сортировка чисел по убыванию |
head -1 | первая строка |
<команда> > <файл> | записать вывод в файл |
mkdir -p <каталог> | создать каталог |
nano <файл> | простой редактор: Ctrl+O — сохранить, Enter, Ctrl+X — выйти |
chmod +x <файл> | сделать файл исполняемым |
Скрипт начинается со строки #!/bin/bash. Внутри скрипта используйте полный путь или $HOME, потому что
проверка запускает его из другого каталога.