5 скриптов, которые я ежедневно использую в качестве системного администратора 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="admin@example.com"
echo "Starting updates on $(date)" >> $LOGFILE
apt update && apt upgrade -y >> $LOGFILE 2>&1
apt autoremove -y >> $LOGFILE 2>&1
tail -20 $LOGFILE | mail -s "System Update Report: $HOSTNAME" $EMAIL

(Для пользователей 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

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

Заключение

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

Зарубин Иван Эксперт по Linux и Windows

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

Похожие статьи

Комментарии (0)