Второй блок — текстовые утилиты. Для провайдера это критически важно: анализ логов, парсинг конфигов, выборка данных из CSV-отчётов биллинга.
# grep: поиск ошибок в логах с контекстом (3 строки до и после)
grep -n -C 3 'ERROR\|FATAL' /var/log/syslog
# grep: рекурсивный поиск IP-адресов в конфигах
grep -rn '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' /etc/
# grep: подсчёт количества уникальных IP, стучавшихся по SSH
grep 'Failed password' /var/log/auth.log | grep -oP '\d+\.\d+\.\d+\.\d+' | sort -u | wc -l
AWK для табличных данных:
# Суммировать трафик из лога биллинга (5-я колонка — байты)
awk '{sum += $5} END {printf "Total: %.2f GB\n", sum/1073741824}' /var/log/billing.log
# Топ-10 IP по количеству запросов из access.log
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# Вывести строки, где время ответа > 5 секунд
awk '$NF > 5.0 {print $0}' /var/log/nginx/access.log
SED для массовых замен:
# Замена IP-адреса во всех конфигах Nginx
sed -i 's/192\.168\.1\.10/10\.0\.0\.10/g' /etc/nginx/conf.d/*.conf
# Удаление комментариев и пустых строк из конфига
sed '/^#/d; /^$/d' /etc/ssh/sshd_config
# Вставка строки после совпадения
sed '/\[mysqld\]/a\max_connections = 500' /etc/mysql/my.cnf
CUT и другие утилиты:
# Извлечение имён пользователей и их шеллов
cut -d: -f1,7 /etc/passwd
# Сортировка процессов по памяти
ps aux | sort -rnk 4 | head -10
# Уникальные значения из CSV (2-я колонка)
cut -d',' -f2 clients.csv | sort -u
Оставить комментарий