Учим Ubuntu докладывать о своем состоянии по почте за 5 минут

Сколько я работаю админом, столько придумываю скрипты и методы как упростить администрирование серверов. Так как мне больше всего нравится Linux, то мои мысли направлены на упрощение админства именно этой оси.

В один прекрасный день мне понадобилось автоматизировать некую рутинную работу на своем ноутбуке с Ubuntu. Через 15 минут скрипт был написан, протестирован и добавлен в крон по заданию. Очень удобно, все хорошо. Но чего-то не хватало. За время работы админом я приобрел профессиональную паранойю: всегда в работе надо продумывать самые плохие сценарии. А если мой сценарий не сработает?

Еще через 5 минут я захотел улучшить проделанную работу. И тут я вспомнил про скрипт для отправки сообщения по почте с терминала Linux, которым я активно пользуюсь на работе в системе мониторинга Zabbix.

Существует очень удобная легковесная консольная утилита для отправки емэйлов SendEmail.

1. Обновляем список пакетов и устанавливаем

sudo apt-get update && sudo apt-get install sendemail


2. Допустим, у нас есть некий скрипт backup.sh

<code class="bash">#!/bin/bash
# Создаем переменную с датой
DATE=`date +%d%m%y`

# Создаем папку с датой
mkdir /backup/$DATE

# Делаем бэкап папки /etc
7za a /backup/$DATE/backup.7z /etc/*
</code>

3. Создаем в той же папке скрипт sendemail.sh
<code class="bash">#!/bin/bash
# Будет отображаться "От кого"
FROM=my@server.ru
# Кому
MAILTO=email@yandex.ru
# Тема письма
NAME=$1
# Тело письма
BODY=$2
# В моем примере я отправляю письма через существующий почтовый ящик на gmail.com 
# Скрипт легко адаптируется для любых почтовых серверов
SMTPSERVER=smtp.gmail.com
# Логин и пароль от учетной записи gmail.com
SMTPLOGIN=name@gmail.com
SMTPPASS=superpassword

# Отправляем письмо
/usr/bin/sendEmail -f $FROM -t $MAILTO -o message-charset=utf-8  -u $NAME -m $BODY -s $SMTPSERVER -o tls=yes -xu $SMTPLOGIN -xp $SMTPPASS
</code>

Сохраняем, делаем скрипт исполняемым
chmod +x sendemail.sh


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

Пробуем отправить письмо. Передаем скрипту параметры, первым будет тема, вторым тело письма.
./sendemail.sh Тест Проверка!


Проверяем почту. На нее должно придти тестовое письмо.

4. Усовершенствуем скрипт бэкапа
Например, я хочу узнать размер созданного бэкапа и свободное место на томе.
<code class="bash">#!/bin/bash
# Создаем переменную с датой
DATE=`date +%d%m%y`

# Создаем папку с датой
mkdir /backup/$DATE

# Делаем бэкап папки /etc
7za a /backup/$DATE/backup.7z /etc/*

# Создадим переменные с необходимой информацией. 
# Допустим конечная папка примонтирована к отдельному диску
# Узнаем размер занимаемого места созданным бэкапом
DU=`du -sh /backup/$DATE`
# И информацию о размере диска
DF=`df -hT /backup`

# Отправляем письмо с информацией
./sendemail.sh "Бэкап выполнен!" "$DU $DF"
</code>

Конечно письмо будет несколько некрасивым, слишком много лишнего. Но смысл главное ясен.

Теперь можно заставить ваши сервера докладывать о проделанных действиях, о своем состоянии и показателях. Считаю очень удобным, особенно когда подключена почта на смартфоне и в любое время админ получит информацию.

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


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.