Полезные скрипты для сисадминов: 15 решений для автоматизации

Содержание статьи

Скрипты для мониторинга серверов и сети

Мониторинг серверов и их нагрузки: как сделать и какие есть инструменты — изображение номер один

Начнём с практической ценности: полезные скрипты для сисадминов экономят часы ручной работы. Вместо того чтобы вглядываться в дашборды, проще автоматизировать проверку ключевых метрик. Ниже — несколько рабочих вариантов, которые реально упрощают жизнь.

Проверка доступности узлов

Банальный, но действенный подход — цикл с ping или nc. Такой инструмент прогоняется по списку хостов из файла и выдаёт отчёт о недоступных. Удобно запускать его по расписанию через cron.

Нагрузка на диск и память

Следить за заполнением разделов помогает однострочник с df -h и awk. Он отфильтрует тома, где занято больше 80%, и отправит предупреждение в Telegram или на почту. Аналогично — с free -m для оперативной памяти.

Сетевые соединения

Для быстрой диагностики пригодится подсчёт установленных TCP-соединений по портам. Это позволяет вовремя заметить аномалии, например, подозрительную активность или исчерпание пула соединений.

Скрипт Назначение Типичный запуск
ping-сканер Контроль доступности хостов каждые 5 минут
df-монитор Отслеживание места на дисках раз в час
ss-анализатор Просмотр активных соединений по требованию

Главное — не усложнять. Небольшой набор утилит на Bash или Python закрывает большинство повседневных задач без тяжёлых систем мониторинга.

Автоматический контроль нагрузки CPU и памяти

Мониторинг ресурсов вручную — удел мазохистов. Проще доверить наблюдение скрипту, который сам зафиксирует аномалии. Например, простая конструкция на bash снимает показания через top или vmstat и пишет их в лог-файл с меткой времени. Если загрузка процессора стабильно превышает 90% дольше пяти минут — срабатывает триггер на отправку уведомления в Telegram. Для памяти порог обычно ниже: 80–85% занятого объёма уже повод проверить, не утёк ли процесс. Подобный инструмент удобно запускать через cron каждые пять минут, чтобы иметь историю для последующего анализа.

Скрипт проверки доступности хостов и портов

Примеры использования tcpdump в Linux FirstVDS - изображение номер два
Примеры использования tcpdump в Linux FirstVDS — изображение номер два

Для быстрой диагностики сети удобно использовать bash-скрипт, который опрашивает список адресов через nc -z -w или timeout с /dev/tcp. Такой подход позволяет за пару секунд выявить недоступный сервис, не прибегая к тяжёлым мониторинговым системам. Ниже — простой пример цикла, который проверяет связку «IP:порт» и пишет результат в лог.

#!/bin/bash
while read host port; do
  if timeout 2 bash -c "echo >/dev/tcp/$host/$port" 2>/dev/null; then
    echo "$host:$port доступен"
  else
    echo "$host:$port не отвечает"
  fi
done < hosts.txt

Для параллельной проверки множества адресов удобнее использовать xargs -P — это заметно ускоряет работу при больших списках. Утилита nmap тоже справляется, но её не всегда разрешено ставить на машины.

Мониторинг дискового пространства с уведомлением в Telegram

Когда место на сервере заканчивается внезапно, это всегда неприятный сюрприз. Автоматический контроль свободных гигабайтов избавляет от ручной проверки каждой машины. Простейший bash-сценарий, запускаемый по cron, способен оповестить о критическом заполнении тома.

Логика работы элементарна: скрипт сверяет процент использования с пороговым значением (например, 85%) и при превышении шлёт сообщение через Bot API. Удобно, что не нужен отдельный почтовый сервер — только токен бота и chat_id получателя.

#!/bin/bash
THRESHOLD=85
TOKEN="ваш_токен"
CHAT_ID="ваш_id"
df -h | awk 'NR>1 {gsub("%","",$5); if ($5 > '"$THRESHOLD"') print $1, $5}' | while read line; do
  curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
    -d chat_id="$CHAT_ID" -d text="Внимание: $line занято на сервере"
done

Для исключения ложных срабатываний стоит добавить фильтр по файловой системе, игнорируя tmpfs и overlay. В cron запись выглядит так: 0 * * * * /usr/local/bin/disk_alert.sh — проверка каждый час. При желании порог можно сделать параметром командной строки, чтобы разные хосты использовали свои настройки.

Читать так же:  Principle для анимации: полный гайд по программе

Скрипты для резервного копирования и синхронизации

Автоматизация сохранности данных — базовая задача любого администратора. Вместо ручного копирования удобнее применять небольшие утилиты, которые запускаются по расписанию через cron или планировщик Windows. Например, простая команда rsync с флагом -a --delete зеркалирует каталоги, а borgbackup позволяет хранить дедуплицированные снапшоты с шифрованием. Для синхронизации между серверами часто используют lsyncd, отслеживающий изменения в реальном времени. Ниже — пара практичных примеров.

  • Бэкап базы данных PostgreSQL с ротацией: pg_dump | gzip > /backup/$(date +%F).sql.gz и удаление архивов старше 14 дней через find.
  • Синхронизация конфигов с удалённым хостом: rsync -avz -e ssh /etc/nginx/ user@backup:/backup/nginx/.

Инкрементальный бэкап баз данных MySQL и PostgreSQL

Для регулярного резервирования изменений удобно использовать утилиты mysqlbinlog и pg_basebackup в связке с WAL-архивированием. Первая фиксирует бинарные логи, вторая создаёт согласованную копию кластера. Автоматизировать процесс можно через cron, а проверку целостности — скриптом с CHECKSUM TABLE.

Синхронизация файлов между серверами по rsync

Для зеркалирования каталогов между хостами удобно применять rsync в связке с SSH. Утилита передаёт только изменённые блоки, что экономит трафик и время. Типовой вызов выглядит так: rsync -avz --delete /путь/ user@host:/цель/. Флаг --delete убирает лишние файлы на приёмнике, а -z включает сжатие. Для автоматизации добавьте задание в cron, но не забудьте настроить ключи доступа, чтобы пароль не вводился вручную.

Ротация старых резервных копий с автоматической очисткой

Автоматизация задач и резервное копирование на сервере / Хабр - изображение номер три
Автоматизация задач и резервное копирование на сервере / Хабр — изображение номер три

Хранение бэкапов без системы — это хаос. Рано или поздно диск заполняется, и свежие снимки некуда писать. Решается проблема скриптом, который удаляет устаревшие архивы по расписанию.

Логика проста: оставляем N последних копий, остальное стираем. Например, для ежедневных бэкапов достаточно держать 14 штук. Для еженедельных — 8. Всё, что старше, подлежит удалению.

Вот пример на Bash:

#!/bin/bash
BACKUP_DIR="/var/backups"
KEEP=14
find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +$KEEP -delete

Команда find находит файлы старше 14 дней и удаляет их. Для ежемесячных архивов лучше использовать другой каталог и отдельный таймер в cron.

Важный нюанс: проверяйте, что скрипт не затронет свежие файлы. Тест с флагом -exec echo вместо -delete поможет избежать случайного удаления нужного.

Скрипты для автоматизации рутинных задач администрирования

Монотонная работа отнимает часы, которые можно потратить на развитие инфраструктуры. Автоматизация превращает повторяющиеся операции в набор выполняемых команд. Ниже — подборка полезных решений, проверенных на практике.

Резервное копирование и синхронизация

Сохранность данных — базовая потребность любой организации. Вместо ручного копирования файлов по расписанию удобнее использовать сценарии, которые сами запускаются в нужное время.

  • Инкрементальное копирование с помощью rsync — переносит только изменённые блоки, экономя трафик и дисковое пространство. Скрипт можно запускать через cron каждую ночь.
  • Синхронизация с удалённым сервером по SSH — использует шифрованный канал, что исключает перехват данных при передаче.
  • Архивация с ротацией — хранит последние N копий, удаляя устаревшие. Это предотвращает переполнение диска.

Мониторинг состояния системы

Проактивный контроль позволяет заметить проблему до того, как она станет критичной. Небольшие программы на Bash или Python способны отслеживать ключевые метрики.

Метрика Команда/инструмент Действие при срабатывании
Загрузка CPU top, mpstat Отправка уведомления в Telegram
Свободное место на диске df -h Очистка временных файлов
Доступность сервиса curl, nc Перезапуск службы

Управление пользователями и правами

При массовом приёме сотрудников создание учётных записей вручную — утомительное занятие. Пакетная обработка через скрипт сокращает время с нескольких часов до пары минут. Достаточно подготовить CSV-файл с данными, а программа сама создаст логины, задаст временные пароли и настроит домашние каталоги.

Очистка логов и временных данных

Журналы системных событий разрастаются стремительно. Без регулярной очистки они заполняют весь раздел, вызывая сбои в работе приложений. Автоматизированная ротация сжимает старые записи и удаляет те, что старше заданного периода. Это поддерживает стабильную работу без вмешательства администратора.

Грамотно написанные сценарии — это инвестиция в стабильность. Они освобождают ресурсы для решения действительно сложных задач, требующих живого участия специалиста.

Читать так же:  Autoruns для Windows 10: как пользоваться утилитой

Массовое создание пользователей и настройка прав доступа

Настройка прав пользователей в 1С Smart Cloud - изображение номер четыре
Настройка прав пользователей в 1С Smart Cloud — изображение номер четыре

Когда сотрудников десятки, а то и сотни, ручная возня с каждым аккаунтом превращается в ад. Выручает цикл for в bash, читающий список из CSV. Скрипт генерирует логины, задаёт временные пароли и сразу шлёт приветственное письмо через mail. Права удобно раздавать через группы: добавил человека в www-data — и он уже работает с веб-сервером. Для отзыва доступа достаточно одной команды usermod, а не правки десятка конфигов.

Автоматическая установка обновлений безопасности в нерабочее время

Патчи критических уязвимостей лучше ставить ночью, когда нагрузка на сервисы минимальна. Для этого подходит планировщик cron и скрипт, который проверяет наличие апдейтов и запускает их установку в заданный час. В Debian-подобных системах удобно использовать unattended-upgrades, но для гибкого контроля расписания пишут собственный bash-сценарий.

Пример логики:

  • проверка времени суток;
  • блокировка запуска при активных пользователях;
  • запись логов в отдельный файл;
  • отправка уведомления в Telegram после перезагрузки.

Такой подход снижает риск простоя и не мешает работе днём.

Скрипт очистки временных файлов и кэша системы

Для освобождения места на диске удобно применять небольшую утилиту, которая удаляет мусор из стандартных каталогов. Ниже — пример для Linux-окружения.

  • Очистка /tmp и /var/tmp от объектов старше 3 дней.
  • Сброс кэша пакетного менеджера (apt, yum, dnf) с сохранением логов.
  • Удаление миниатюр и эскизов в ~/.cache/thumbnails.

Запуск по расписанию через cron избавляет от ручного вмешательства. Важно проверять права доступа и не трогать файлы, используемые активными процессами.

Скрипты для анализа логов и диагностики сбоев

Разбор журналов событий — рутина, отнимающая часы. Автоматизация тут спасает: пара строк на Bash способна вытащить из вороха записей зерно проблемы. Например, однострочник, фильтрующий строки по уровню критичности за последние сутки, часто оказывается полезнее полноценного SIEM.

Для диагностики внезапных падений сервисов удобно использовать комбинацию утилит: journalctl собирает данные, а awk или grep выделяют аномалии. Ниже — пара практичных примеров, которые легко адаптировать под свою среду.

Задача Инструмент Результат
Поиск повторяющихся ошибок sort + uniq -c Список частотных сбоев
Мониторинг времени ответа tail + awk Средняя задержка за окно

Главное — не пытаться объять необъятное: скрипт, решающий одну конкретную задачу, ценнее универсальной «швейцарской пилы».

Поиск ошибок в системных журналах за последние сутки

Когда что-то ломается, первым делом смотришь в логи. Но выудить нужное из сотен строк — та ещё морока. Выручает однострочник на базе journalctl:

journalctl --since "24 hours ago" -p err --no-pager | grep -v "audit\|NetworkManager" | sort | uniq -c | sort -rn | head -30

Что здесь происходит:

  • -p err — отсекаем всё, кроме ошибок и критических событий;
  • grep -v — убираем шумные источники вроде аудита;
  • uniq -c — группируем повторяющиеся записи и считаем их количество.

Результат — топ повторяющихся сбоев с частотой появления. Сразу видно, что сыпется чаще всего. Для старых дистрибутивов с rsyslog подойдёт связка grep и awk по файлу /var/log/messages за вчерашний день. Работает чуть медленнее, но суть та же.

Анализ логов веб-сервера для выявления подозрительных запросов

Правила жизни сисадмина / Habr - изображение номер пять
Правила жизни сисадмина / Habr — изображение номер пять

Ручной просмотр access-файлов отнимает часы, поэтому стоит автоматизировать поиск аномалий. Простой awk-скрипт фильтрует записи по кодам ответа 401, 403 и 500, а также отсекает обращения к служебным путям вроде /wp-admin или /.env. Дополнительно можно группировать строки по IP-адресу и подсчитывать частоту обращений — так выявляются переборщики паролей и сканеры уязвимостей.

  • Собирайте статистику по user-agent, чтобы отсеять ботов.
  • Сверяйте подозрительные адреса с публичными blacklist-базами.
  • Настраивайте уведомление в Telegram при превышении порога.

Скрипт сбора диагностической информации перед обращением в поддержку

Когда инцидент требует вмешательства техподдержки, тянуть время на переписку не хочется. Гораздо эффективнее заранее подготовить пакет данных о состоянии системы. Небольшой bash-скрипт способен автоматизировать рутину: он собирает вывод dmesg, логи ядра, сведения об использовании диска и памяти, список процессов. Всё это упаковывается в архив с меткой времени. Такой подход сокращает диалог до одного сообщения и ускоряет диагностику.

Скрипты для управления службами и процессами

Мониторинг демонов и фоновых задач — рутина, которую легко автоматизировать. Вместо ручного ввода systemctl или kill удобнее применять небольшие утилиты, которые сами проверяют статус и перезапускают упавшие сервисы.

Читать так же:  ISIS для схем: полный гайд по проектированию плат

Вот несколько рабочих вариантов для повседневных задач:

  • Проверка активного состояния конкретной службы через systemd и запись результата в лог.
  • Автоматический рестарт зависшего процесса по таймауту или по отсутствию ответа на ping.
  • Скрипт-сторож, который следит за PID-файлом и поднимает демон заново, если тот завершился с ошибкой.

Полезно добавить в такой инструмент отправку уведомления в Telegram или на почту, чтобы знать о сбое сразу, а не при взгляде на мониторинг.

Автоматический перезапуск зависших сервисов по расписанию

Когда служба перестаёт отвечать, ждать ручного вмешательства не всегда разумно. Надёжнее доверить контроль cron’у. Пара строк в планировщике способна заменить дежурного специалиста в ночную смену.

Простейший вариант проверки — утилита pgrep в связке с systemctl. Логика такая: если процесс не найден, выполняем перезапуск и пишем событие в лог.

#!/bin/bash
if ! pgrep -x "nginx" > /dev/null; then
    systemctl restart nginx
    echo "$(date) nginx перезапущен" >> /var/log/service_restarts.log
fi

Для более тонкой настройки удобно использовать systemd-таймеры вместо классического crontab. Они позволяют задать точное время старта и устойчивы к пропуску запусков после простоя машины.

Важно помнить о «ложных срабатываниях»: процесс может висеть, но не отвечать на запросы. Тогда стоит проверять не наличие PID, а доступность порта или HTTP-код ответа.

Контроль запущенных процессов и завершение аварийных задач

Когда сервер начинает «тормозить», первым делом смотрят на список активных задач. Для быстрой диагностики удобно использовать однострочные команды, которые сразу показывают самых прожорливых потребителей памяти или CPU. Например, вывод с сортировкой по нагрузке позволяет мгновенно обнаружить аварию.

Если процесс завис и не реагирует на обычные сигналы, применяют принудительное завершение. Полезно держать под рукой скрипт, который не только убивает задачу по имени, но и записывает событие в лог. Это помогает позже разобраться, что пошло не так.

  • Проверка состояния по PID или имени.
  • Автоматический перезапуск упавших служб.
  • Очистка «зомби»-процессов.

Скрипт планового перезапуска веб-сервера без потери соединений

Bash-скрипт для перезагрузки веб-сервера - изображение номер шесть
Bash-скрипт для перезагрузки веб-сервера — изображение номер шесть

Для аккуратной перезагрузки nginx или Apache применяется двухфазный подход: сначала процесс получает сигнал о завершении новых подключений, затем — о graceful-остановке старых воркеров. В системах с systemd удобно использовать команду systemctl reload, которая не рвёт активные сессии, а лишь перечитывает конфигурацию. Если требуется полный рестарт, проверьте таймауты в юнитах и добавьте проверку nginx -t перед перезапуском, чтобы избежать простоя из-за синтаксической ошибки.

Скрипты для сетевой безопасности и защиты

Для мониторинга подозрительной активности пригодится анализатор логов fail2ban. Он автоматически блокирует IP-адреса после нескольких неудачных попыток входа. Дополнительно стоит настроить уведомления о новых подключениях к SSH через Telegram-бота — это займёт не больше десяти минут.

Полезные инструменты для быстрой проверки:

  • Сканер открытых портов на основе netcat;
  • Скрипт сверки контрольных сумм критичных бинарников;
  • Парсер access-логов веб-сервера для выявления аномалий.

Регулярный аудит конфигурации межсетевого экрана помогает вовремя заметить ослабление политик. Автоматизируйте резервное копирование правил iptables перед каждым изменением.

Автоматическое добавление IP-адресов в блокировку при brute-force атаках

Перебор паролей по SSH — частая головная боль. Вручную банить подсети утомительно, поэтому проще доверить это скрипту. Он анализирует логи за последние 10 минут, вычленяет адреса с тремя и более неудачными попытками входа и отправляет их в iptables или fail2ban. Ниже — примерная логика работы.

  • Чтение journalctl или /var/log/auth.log.
  • Фильтрация строк с ошибками аутентификации.
  • Сравнение с чёрным списком, чтобы не дублировать записи.
  • Добавление правила с временной меткой для автоочистки.

Такой подход снимает рутину и снижает риск пропустить атаку. Главное — не забыть про ротацию логов и тестирование на тестовом стенде.

Проверка открытых портов и закрытие неиспользуемых служб

Для быстрой инвентаризации сетевых ресурсов удобно применять утилиту ss с флагом -tulpn. Она покажет все слушающие сокеты и связанные с ними процессы. Лишние сервисы вроде ненужного CUPS или устаревшего FTP стоит отключить через systemctl disable --now. Периодический аудит снижает поверхность атаки.

Скрипт сканирования сети на наличие новых устройств

Контроль за подключениями к локальной инфраструктуре — базовая гигиена. Простой bash-вариант с утилитой nmap позволяет фиксировать изменения в списке активных хостов. Алгоритм: сохраняем эталонный список, затем сравниваем с текущим выводом сканера. Разницу отправляем в лог или Telegram. Для исключения ложных срабатываний стоит добавить фильтр по MAC-адресам и таймаут ожидания ответа.

Related Articles

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *