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




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