ITСooky

IT-рецепты съедобные и не очень!

Мониторим сервер просто, как два пальца, на коленке!

дата 15.08.2015

Конечно есть готовые решения для этого, но когда понимаешь как все работает и как можно все что хочешь сделать это просто прям ваще!!!

Screenshot_2015-08-15-10-23-20

План: первое ставим sstmp, чтобы отправлять сообщения сервера человеку через аккаунт GMAIL, втрое через expect bash анализируем и высылаем то что надо.

Отправлять сообщения из командной строки через обычную учетку(как мне казалось) очень просто!

Сначала отключаем sendmail…
vi /etc/rc.conf

sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

…он должен был бы работать, но не работает, потому что… Вообще для отправки почты не нужны же никакие аккаунты ни где — просто уникальный IP, уникальное имя машины и шли, но спамеры все испортили и это не работает уже так!

Перегружаемся или
killall sendmail

Я всегда за перезагрузку — дома можно!

cd /usr/ports/mail/ssmtp
make
make install

если хотим что все системные письма попадали на нашу почту (указанную в ssmtp.conf )доводим файл

vi /etc/mail/mailer.conf

до вида

sendmail	/usr/local/sbin/ssmtp
send-mail	/usr/local/sbin/ssmtp
mailq		/usr/local/sbin/ssmtp
newaliases	/usr/local/sbin/ssmtp
hoststat	/usr/bin/true
purgestat	/usr/bin/true

а если хотим только отправлять (без получения системныз сообщения на адрес указанный в качестве рутового) оставляем тут только

send-mail	/usr/local/sbin/ssmtp

Нам нужна учета GMAIL у этого свои ограничения вот про них написано https://support.google.com/a/answer/176600?hl=ru

Создаем файл
vi /usr/local/etc/ssmtp/ssmtp.conf
добавляем
root=texttest@gmail.com
mailhub=smtp.gmail.com:465
rewriteDomain=gmail.com
hostname=ITCooky_VPS
realname="ITCooky"

FromLineOverride=YES
AuthUser=texttest@gmail.com
AuthPass=mypassword
UseTLS=YES

Ящики root и AuthUser теперь должны совпадать после изменений в жмайле с 5 ноября.
Иии как я понял, на ящик указанный в root= начинают валится системный сообщения сервера — не понял как их отключить

Перегружаемся
Проверяем
ssmtp -v texttest@gmail.com

Ничего не происходит просто подвешивает нам окно терминала! Если подождать пару минут и постучать по клавиатуре появится диалог с ошибкой и с отправкой по ссылке https://support.google.com/mail/answer/78754 оказывается gmail нас не пускает — надо прочитать все что на странице и всё попробовать, мне кажется помогла четвертая строка!

Теперь можно пробовать что-то послать
echo test | mail -v -s "testing ssmtp setup" texttest@gmail.com

Письмо ушло и пришло! Единственно что письмо приходит от Charlie &
идем в
vipw
И в записи root меняем это имя на то что хотим!

Теперь я хотел на expect написать проверялку свободного места на диске, но у него проблемы с палкой!!! А у BASH нет проблем с палкой, у него есть пробелмы с запятой — но это лучше чем проблема с палкой!!! По двум статьям на хабре можно научит элементарный скрипт писать.

Создаем файл
vi mailhddalert.sh
вставляем туда

#!/usr/local/bin/bash
##min hard space sh in Mb
sh=600
s1=`/bin/df -b | /usr/bin/grep ada0p3 | /usr/bin/awk '{print $4}'`
let "s2 = ( (sh * 1073741824 ) /512 ) / 1024"
mail=ypu(a)gmail.com
if [[ "$s1" -le "$s2" ]]
then
let "s3 = (s1 * 512) / 1048576)"
echo "Avaiilabel ${s3}M. Minimun alert size is ${sh}M"  | mail -v -s "Root low HDD space on your ITC server!!!" ${mail}
exit
else
exit
fi

s1 — здесь указана замеряемая партиция ada0p3
s2 — меньше этого размера в битах будет высылаться предупреждение
mail — mail

делаем
chmod +x mailhddalert.sh
и вставляем врасписание
crontab -e
строчку чтобы запускала на каждой 51 — минуте это скрипт
51 * * * * /root/mailhddalert.sh

ААА и Ура работает!!! Как бэ…

Screenshot_2015-08-15-10-40-44

…что с GMAIL на Android не так-то!!! Почему нельзя удалить ОДНО ПИСЬМО из цепочки писем, только всю ЦЕПОЧКУ ААА!!!

UPD: Вот скрипт отсылки внешнего IP если поменялся

#!/usr/local/bin/bash
s1=`dig +short myip.opendns.com @resolver1.opendns.com`
s2=`cat myip.status`
mail=mymail(@)gmail.com
if [ "$s1" = "$s2" ]
then
exit
else
echo ${s1} > myip.status
echo "Your IP now is ${s1}"  | mail -v -s "IP has changes on your ITC server!!!"
 ${mail}
exit
fi