Site icon ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Понедельник, 23 июня, 2025

5 скриптов Bash, которые я использую ежедневно как системный администратор Linux

5 скриптов Bash, которые я использую ежедневно как системный администратор Linux

Если вы потратили какое-то время на управление системами Linux, вы уже знаете, насколько повторяющимися и трудоемкими могут быть некоторые задачи. Будь то проверка дискового пространства, перезапуск неисправных служб или обновление системы, выполнение всего вручную быстро становится головной болью, особенно если вы работаете с несколькими серверами.

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

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

В этой статье вы откроете для себя пять простых, но мощных скриптов Bash, которые полезны в ежедневном администрировании системы Linux. Эти скрипты удобны для новичков и их легко модифицировать для вашей собственной среды.

 

1. Скрипт мониторинга использования диска

Одна из самых распространенных проблем на серверах Linux — нехватка места на диске. Журналы заполняются, резервные копии растут, и внезапно ваше приложение падает, потому что на сервере не хватает места. Вот почему мой первый скрипт проверяет использование диска и отправляет оповещение, если использование выходит за установленный предел (например, 80% ).

#!/bin/bash
THRESHOLD=80
EMAIL="admin@example.com"

df -hP | grep -vE '^Filesystem|tmpfs|cdrom' | while read line; do
  USAGE=$(echo $line | awk '{print $5}' | sed 's/%//')
  MOUNTPOINT=$(echo $line | awk '{print $6}')
  
  if [ $USAGE -ge $THRESHOLD ]; then
    echo "Warning: High disk usage on $MOUNTPOINT ($USAGE%)" | mail -s "Disk Alert: $HOSTNAME" $EMAIL
  fi
done

 

Этот скрипт проверяет каждый раздел, и если какой-либо из них превышает порог в 80%, я получаю электронное письмо. Это помогает нам устранять неполадки до того, как они станут проблемами. Мы запускаем этот скрипт через cron каждые 6 часов.

 

2. Скрипт автоматизации обновления системы

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

#!/bin/bash
LOGFILE="/var/log/sys-updates.log"
EMAIL="[email protected]"

echo "Starting updates on $(date)" >> $LOGFILE
apt update && apt upgrade -y >> $LOGFILE 2>&1
apt autoremove -y >> $LOGFILE 2>&1

tail -20 $LOGFILE

 

(Для пользователей RHEL/CentOS просто замените aptна команды yumили dnf.)

Запуск этого скрипта через cron-задание раз в день поддерживает мои системы в актуальном состоянии и чистоте. Отчет по электронной почте дает мне уверенность в том, что все прошло гладко. Если что-то сломается, мы сможем проверить файл журнала и откатиться назад.

 

3. Скрипт проверки работоспособности сервиса

Как системный администратор, мы должны знать, если ключевые службы, такие как Apache , Nginx или MySQL, выходят из строя. Этот скрипт проверяет, запущена ли определенная служба, и если нет, он перезапускает ее и уведомляет нас.

#!/bin/bash
SERVICES=("apache2" "mysql")
EMAIL="admin@example.com"

for SERVICE in "${SERVICES[@]}"; do
  if ! systemctl is-active --quiet $SERVICE; then
    systemctl start $SERVICE
    echo "$SERVICE was down and has been restarted on $HOSTNAME" | mail -s "Service Restart Alert" $EMAIL
  fi
done

 

Этот скрипт проверяет их каждые 5 минут через cron. Если какая-либо служба не работает, он автоматически перезапускает ее и отправляет нам уведомление.

 

4. Скрипт резервного копирования важных файлов

Резервные копии скучны, пока они вам не понадобятся. У меня есть собственный скрипт Bash, который делает резервные копии моих критически важных файлов (таких как веб-файлы, базы данных, файлы конфигурации) и сохраняет их в сжатом архиве.

#!/bin/bash
BACKUP_DIR="/backup"
SOURCE_DIRS="/etc /var/www /home"
DATE=$(date +%F)
BACKUP_FILE="$BACKUP_DIR/backup-$DATE.tar.gz"
EMAIL="admin@example.com"

tar -czf $BACKUP_FILE $SOURCE_DIRS

if [ $? -eq 0 ]; then
  echo "Backup completed successfully: $BACKUP_FILE" | mail -s "Backup Success - $HOSTNAME" $EMAIL
else
  echo "Backup FAILED!" | mail -s "Backup Failed - $HOSTNAME" $EMAIL
fi

 

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

 

5. Скрипт мониторинга входа пользователя

Этот скрипт проверяет активность входа пользователей в систему и оповещает вас, если кто-то входит в систему. Это особенно полезно, если вы управляете производственными серверами и хотите отслеживать доступ.

#!/bin/bash
LOGFILE="/var/log/auth.log"
LAST_RUN_FILE="/tmp/last_run_time"
EMAIL="admin@example.com"

if [ ! -f $LAST_RUN_FILE ]; then
  date --date='5 minutes ago' +%s > $LAST_RUN_FILE
fi

LAST_RUN=$(cat $LAST_RUN_FILE)
NOW=$(date +%s)

awk -v last=$LAST_RUN -v now=$NOW '
  $0 ~ /session opened for user/ {
    cmd = "date -d \""$1" "$2" "$3"\" +%s"
    cmd | getline t
    close(cmd)
    if (t >= last && t <= now) { print $0 } } ' $LOGFILE | mail -s "Login Alert - $HOSTNAME" $EMAIL echo $NOW > $LAST_RUN_FILE

 

Этот скрипт помогает мне узнать, кто и когда получал доступ к серверу. Он отлично подходит для обнаружения необычных схем доступа. Вы можете расширить его, чтобы блокировать IP-адреса или активировать сигналы тревоги, если это необходимо.

 

Заключение

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

Exit mobile version