Как стать автором
Обновить

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

Привет, хабражители!

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

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

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



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

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

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

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

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

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

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


3. Создаем в той же папке скрипт sendemail.sh
#!/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


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

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

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

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

4. Усовершенствуем скрипт бэкапа
Например, я хочу узнать размер созданного бэкапа и свободное место на томе.
#!/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"


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

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

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

P.S. Мой первый топик, извиняюсь сразу.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.