Wysyłanie automatycznych wiadomości e-mail w systemie CentOS7

Wysyłanie automatycznych wiadomości e-mail w systemie CentOS7

               Zarządzając środowiskami informatycznymi opartymi na Linuksie często zachodzi potrzeba cyklicznego wysyłania powiadomień o stanie maszyny czy działających procesach. Artykuł ten opisuje jak w prosty sposób skonfigurować wysyłanie automatycznych wiadomości e-mail w systemie CentOS7. Oczywiście istnieje wiele gotowych aplikacji do analizy i zgłaszania błędów w systemach informatycznych tj. Centreon. Choć są one bardzo rozbudowane i oferują szeroką gamę modułów to często zachodzi potrzeba otrzymywania niestandardowych powiadomień (np. informacje pobrane ze strony internetowej czy wygenerowane przez jakąś aplikację).

              Aby skonfigurować automatyczne wysyłanie wiadomości należy wykonać następujące kroki:

  1. Konfiguracja automatycznego generowania treści wiadomości
  2. Konfiguracja Firewalla
  3. Instalacja oraz konfiguracja pakietu Mutt.
  4. Konfiguracja zadań cyklicznych w CRONIE.

1. Konfiguracja automatycznego generowania treści wiadomości.

Wszystko co chcemy wysłać umieszczamy w pliku tekstowym, który będzie wykorzystany jako treść wiadomości e-mail. Do jego wygenerowania możemy wykorzystać najróżniejsze systemy czy skrypty. Może być to wynik działania kodu na stronie internetowej lub parę linijek napisanych w Bash-u.

W tym artykule pokażę, jak stworzyć prosty skrypt Bash generujący plik tekstowy z najważniejszymi parametrami systemu: Wykorzystanie CPU, RAM-u, dysku itp. Dla uproszczenia należy zalogować się jako użytkownik root i stworzyć nowy katalog /root/skrypty w którym zostanie umieszczony program.

su root
 mkdir /root/skrypty

Oczywiście każdy użytkownik może stworzyć swoje skrypty i je wykonywać. Należy jednak pamiętać, że mogą one nie zostać wykonane z powodu braku uprawnień.

Teraz można otworzyć dowolny notatnik i stworzyć nowy plik z rozszerzeniem .sh.

cd /root/skrypty
 nano tresc.sh

w treści wpisując:

#!/bin/bash

echo Raport wykorzystania serwera Testowego: > ./serwer.txt

echo >> ./serwer.txt

echo Wykorzystanie dysku: >> serwer.txt

df | grep vg_dane-var >> ./serwer.txt

df | grep vg_system-root >> ./serwer.txt

echo >> ./serwer.txt

echo Informacje o procesorze: >> ./serwer.txt

lscpu | grep CPU: >> ./serwer.txt

echo >> ./serwer.txt

echo Wykożystanie RAM-u i SWAP-u: >> ./serwer.txt

free -h >> ./serwer.txt

echo >> ./serwer.txt

echo Czas pracy serwera: >> ./serwer.txt

uptime >> ./serwer.txt

Następnie należy go zapisać i nadać mu odpowiednie uprawnienia w celu umożliwienia wykonywania kodu.

chmod +x tresc.sh
Skrypt Bash
Skrypt Bash

Na koniec trzeba sprawdzić, czy efekt jego wykonania jest zgodny z naszymi oczekiwaniami przez wykonanie polecenia.

 /root/skrypty/tresc.sh
 cd /root/skrypty
ls

Jeśli wszystko przebiegło pomyślnie powinien zostać stworzony nowy plik o nazwie tresc.txt i treści:

Raport wykorzystania serwera Testowego:

Wykorzystanie dysku:

Informacje o procesorze:
Tryb(y) pracy CPU: 32-bit, 64-bit
CPU: 4
Lista aktywnych CPU: 0-3
Rodzina CPU: 6

Wykożystanie RAM-u i SWAP-u:
total used free shared buff/cache available
Mem: 3,7G 3,1G 516M 8,4M 124M 460M
Swap: 2,0G 0B 2,0G

Czas pracy serwera:
19:01:09 up 21 min, 1 user, load average: 0,00, 0,01, 0,02

2. Konfiguracja Firewalla

Aby było możliwe wysyłanie widomości s serwera pracującego na systemie Centos konieczne jest otwarcie odpowiednich porów na zaporze:

firewall-cmd --permanent --add-port=465/tcp
firewall-cmd --permanent --add-port=993/tcp

firewall-cmd --reload

firewall-cmd –reload Źródło: https://access.redhat.com/solutions/962473

3. Instalacja oraz konfiguracja pakietu Mutt.

Mutt jest lekkim klientem poczty obsługiwanym z linii komend. Aby go zainstalować należy wydać polecenie:

su root
yum install mutt cyrus-sasl* -y
touch $MAIL
chmod 660 $MAIL
chown `whoami`:mail $MAIL

Teraz można rozpocząć konfigurację klienta przez wydanie polecenia

nano ~/.muttrc

Stworzy ono plik konfiguracyjny w katalogu domowym użytkownika, na którym zostało wykonane. Należy podać w nim parametry połączenia do serwera pocztowego. W celach szkoleniowych założyłem konto na G-mailu i dla niego utworzyłem konfigurację połączenia:

set from = „testmutt1234@gmail.com”
set realname = „testmutt1234”
set imap_user = „testmutt1234@gmail.com”
set imap_pass = „—„
set folder = „imaps://imap.gmail.com:993”
set spoolfile = „imaps://imap.gmail.com/INBOX”
set postponed =”+[Gmail]/Drafts”
set header_cache =~/.mutt/cache/headers
set message_cachedir =~/.mutt/cache/bodies
set certificate_file =~/.mutt/certificates
set smtp_url = „smtps://testmutt1234@gmail.com@smtp.gmail.com:465/”
set smtp_pass = „—„
set move = no
set imap_keepalive = 900

Aby można było zacząć wysyłać wiadomości należy jeszcze zatwierdzić konfigurację przez wydanie polecenia:

mkdir -p ~/.mutt/cache

Połączenie jest gotowe. W celu upewnienia się, że wszystko przebiegło zgodnie z planem należy przetestować połączenie wydając polecenie:

mutt -s „Wiadomość Testowa” twojadres@example.com < /root/skrypty/tresc.txt

gdzie:

Wiadomość testowa – tytuł wiadomości

twojadres@example.com - twój adres e-mail

/root/skrypty/tresc.txt – plik z treścią wiadomości.

automatyczna wiadomość e-mail
Automatyczna wiadomość e-mail

Jak widać na zamieszczonym rysunku wysyłanie powiodło się. Przedstawiona konfiguracja dotyczy poczty g-mail lecz inne serwery mogą mieć różne wymagania. Np. w przypadku systemów niewymagających szyfrowania i zezwalających na wysyłanie poczty bez uwierzytelnienia w pliku konfiguracyjnym wystarczy wpisać:

set realname = „Użytkownik”

set from = „uzytkownik@serwer.com”

set smtp_url = „smtp://serwer.com:25”

4. Konfiguracja zadania w CRONIE

Teraz do wcześniej stworzonego kodu tresc.sh można dodać skrypt wysyłający wiadomość e-mail. W tym celu należy go edytować.

nano /root/skrypty/tresc.sh

i dodać nową linijkę:

mutt -s „Raport” biuro@einformatyka.com.pl < /root/skrypty/serwer.txt

Dzięki temu w CRONIE wystarczy skonfigurować jeden skrypt, który zarówno stworzy treść wiadomości jak i ją wyśle.

Aby skonfigurować zadanie cykliczne należy wykonać polecenie

crontab -e

i dopisać do niego następującą linijkę kodu:

01 07 * * * /root/skrypty/raport.sh

gdzie 01 to minuta wykonania a 07 godzina. Po jego zapisaniu wiadomość e-mail będzie wysyłana codziennie o godzinie 7:01.

Please follow and like us:

Dodaj komentarz