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

Автор: valery , 17 ноября 2025

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

Описание скрипта

Скрипт предназначен для мониторинга свободного места на дисках и отправки уведомлений по электронной почте при достижении критического порога заполнения.

Требования

  • Установленный почтовый клиент mailutils
  • Доступ к SMTP-серверу
  • Права на выполнение скрипта

Код скрипта

bash

#!/bin/bash

# Настройки уведомлений
THRESHOLD=90  # Порог в процентах
SENDER="admin@example.com"  # Адрес отправителя
RECEIVER="recipient@example.com"  # Адрес получателя
SMTP_SERVER="smtp.server.com"  # SMTP сервер

# Функция проверки дискового пространства
check_disk_space() {
    # Получаем информацию о заполненности всех разделов
    df -h | grep -vE '^Filesystem|tmpfs|cdrom' | while read line; do
        # Извлекаем процент заполнения
        USE_PERCENT=$(echo $line | awk '{print $5}' | sed 's/%//g')
        MOUNT_POINT=$(echo $line | awk '{print $6}')
        
        # Проверяем превышение порога
        if [ "$USE_PERCENT" -gt "$THRESHOLD" ]; then
            echo "Критическое заполнение раздела $MOUNT_POINT: $USE_PERCENT%"
            return 1
        fi
    done
    return 0
}

# Функция отправки уведомления
send_notification() {
    SUBJECT="Критическое заполнение диска"
    MESSAGE="Обнаружено критическое заполнение дискового пространства:

$(df -h | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{print $5, $6}')

Пожалуйста, освободите место на диске."
    
    # Отправка письма
    echo "$MESSAGE" | mail -s "$SUBJECT" -r "$SENDER" -S smtp="$SMTP_SERVER" "$RECEIVER"
}

# Основная логика скрипта
if check_disk_space; then
    echo "Все разделы в норме"
else
    send_notification
fi

Настройка и использование

  1. Сохраните скрипт в файл, например disk_monitor.sh
  2. Сделайте скрипт исполняемым:

bash

chmod +x disk_monitor.sh

  1. Настройте параметры в начале скрипта:
  • Порог заполнения (THRESHOLD)
  • Email отправителя и получателя
  • SMTP сервер
  1. Добавьте скрипт в cron для автоматического запуска:

bash

crontab -e

Пример записи для запуска каждые 6 часов:

0 */6 * * * /path/to/disk_monitor.sh

Дополнительные возможности

  • Можно добавить логирование в файл
  • Расширить список отслеживаемых разделов
  • Настроить разные пороги для разных разделов
  • Добавить проверку конкретного каталога через команду du

Скрипт будет проверять все разделы, кроме tmpfs и cdrom, и отправлять уведомление, если какой-либо раздел превысит заданный порог заполнения.