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. Эти скрипты могут показаться простыми на первый взгляд, но они выполняют критически важные задачи, которые поддерживают стабильность, безопасность и бесперебойную работу серверов.
Редактор: AndreyEx