Автоматизация

Bash для сисадмина: первые скрипты

Скрипт — это те же команды из терминала, записанные в файл, чтобы не набирать их каждый раз. Программистом становиться не нужно: сисадминский bash — склейка готовых команд. Напишем первый полезный скрипт прямо здесь.

Первый скрипт: бэкап каталога

Задача из жизни: каждый вечер складывать архив каталога с датой в имени. Руками это две команды и память о том, что их надо выполнить. Скриптом — ноль усилий навсегда:

#!/bin/bash
# backup.sh — архив каталога с датой в имени
ISTOCHNIK="/var/www"
KUDA="/backup"
DATA=$(date +%F)

mkdir -p "$KUDA"
tar -czf "$KUDA/www-$DATA.tar.gz" "$ISTOCHNIK"
echo "Готово: $KUDA/www-$DATA.tar.gz"
chmod +x backup.sh   # разрешить запуск
./backup.sh          # выполнить

Здесь уже есть половина bash: переменные, подстановка вывода команды через $(…) и кавычки вокруг путей (привычка, спасающая от пробелов в именах).

Условия: скрипт, который думает

Настоящая автоматизация начинается со слова «если». Например, ругаться, когда место на диске кончается:

#!/bin/bash
# disk-check.sh — тревога при заполнении диска выше 85%
ZANYATO=$(df / --output=pcent | tail -1 | tr -dc '0-9')

if [ "$ZANYATO" -gt 85 ]; then
    echo "Диск / заполнен на $ZANYATO%" | mail -s "Место кончается" admin@firma.ru
fi

Cron: запуск по расписанию

crontab -e            # открыть расписание своих задач
# минуты часы день месяц день-недели команда:
0 23 * * * /home/admin/backup.sh      # бэкап каждый день в 23:00
*/10 * * * * /home/admin/disk-check.sh # проверка диска раз в 10 минут

Связка «скрипт плюс cron» и есть базовая автоматизация, которую ждут от админа: бэкапы, проверки, чистка старых логов делаются сами, а не по памяти.

Как учиться дальше

На курсе Linux с нуля скрипты появляются там, где им место: после освоения системы, на реальных задачах стенда, с проверкой преподавателем.

{ Освоить Linux и bash системно }

Частые вопросы

Bash или Python — что учить сисадмину?

Bash первым: он уже стоит на каждом сервере и склеивает готовые команды. Python — вторым шагом, когда скрипты вырастут до работы с API и данными. Это не выбор, а очередь.

Спрашивают ли bash на собеседовании junior-сисадмина?

Читать чужой простой скрипт и объяснить, что он делает, — да, регулярно. Писать с листа сложное — нет. Два своих скрипта в резюме закрывают вопрос; остальные вопросы разобраны в статье о собеседовании.

Где безопасно тренироваться?

На виртуальной машине: сломал — откатил снимком. Как собрать такой полигон, разобрано в статье о практике.

Куда дальше