Ważne jest, aby codziennie sprawdzać różne dane dziennika i statystyki na swoim serwerze, ale staje się to żmudne. Czy nie byłoby miło otrzymać jeden e-mail ze wszystkimi najważniejszymi wydarzeniami każdego dnia, więc nie musisz nawet wchodzić na serwer, aby sprawdzić problemy? Ten przewodnik pokaże, jak skonfigurować automatyczne wiadomości e-mail w systemach Linux i Windows.
Będziemy to szczególnie dotyczyć Ubuntu i Windows 8.1, z Gmailem jako serwerem e-mail, z którego wysyłana jest poczta. Jeśli masz inną wersję systemu Linux lub Windows lub wolisz korzystać z innej usługi poczty e-mail, instrukcje tutaj powinny być łatwe do dostosowania.
Zamierzamy użyć dwóch różnych pakietów do wykonania tego, ssmtp i mailutils, więc zainstaluj oba z nich za pomocą następującego polecenia:
$ sudo apt-get install ssmtp mailutils
Po ich zainstalowaniu musimy wprowadzić pewne zmiany w pliku konfiguracyjnym SSMTP:
$ sudo vi /etc/ssmtp/ssmtp.conf
Edytuj plik za pomocą tych zmian (możesz bezpiecznie usunąć cały tekst z pliku i skopiować / wkleić te ustawienia, jeśli chcesz):
# Ten adres będzie otrzymywać wiadomości e-mail, więc wpisz tutaj swój adres e-mail, jeśli chcesz je otrzymywać.
# Określ tutaj serwer poczty e-mail (pozostaw tak, jak używasz Gmaila).
mailhub = smtp.gmail.com: 587
# Nazwa domeny, z której pochodzi poczta.
rewriteDomain = gmail.com
# Adres e-mail, z którego powinny pochodzić te wiadomości e-mail.
# Ustawienia SSL / TLS wymagane dla Gmaila i większości innych serwerów pocztowych.
UseTLS = Tak
UseSTARTTLS = Tak
# Nazwa użytkownika i hasło do konta Gmail.
AuthUser = nazwa użytkownika
AuthPass = hasło
# Zezwól na możliwość określenia adresu innego niż podany powyżej.
FromLineOverride = yes
Po zakończeniu edycji pliku będziesz chciał zmienić uprawnienia, ponieważ Twoje hasło do Gmaila jest przechowywane w postaci zwykłego tekstu.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown nazwa_użytkownika.username /etc/ssmtp/ssmtp.conf
Zawsze bezpieczniej jest rootować właściciela pliku, ale wtedy będziemy musieli użyć polecenia sudo w naszym skrypcie, a to spowoduje, że otrzymamy hasło, tym samym pokonując cel automatyzacji całego procesu.
Jeśli korzystasz z udostępnionego serwera i martwisz się, że twoje hasło jest przechowywane w postaci zwykłego tekstu i możliwe do odczytania przez użytkownika root, utwórz wyrzucone konto Gmail lub skorzystaj z serwera poczty e-mail, który w pierwszej kolejności nie wymaga żadnego uwierzytelniania.
Aby upewnić się, że wszystko jest poprawnie skonfigurowane, spróbuj przetestować e-mail:
$ echo "Testowanie" | mail -s "Testowanie konfiguracji poczty" nazwa_uż[email protected]
"Testowanie" będzie znajdować się w treści wiadomości e-mail, a tematem będzie "Testowanie konfiguracji poczty". Sprawdź pocztę, aby upewnić się, że ją otrzymałeś.
Teraz, gdy możemy wysyłać wiadomości e-mail z wiersza poleceń, napiszmy skrypt, który prześle nam podstawowe informacje o naszym systemie.
#! / bin / bash
# Sprawdź miejsce na dysku twardym
echo "Miejsce na dysku twardym:"> /home/geek/email.txt
df -h >> /home/geek/email.txt
# Lista użytkowników, którzy są zalogowani
echo "Użytkownicy aktualnie zalogowani:" >> /home/geek/email.txt
kto >> /home/geek/email.txt
# Lista aktualnie uruchomionych procesów
echo "Uruchomione procesy:" >> /home/geek/email.txt
ps -e >> /home/geek/email.txt
# Wyślij e-mail
cat /home/geek/email.txt | mail -s "Codzienne informacje o serwerze" nazwa_uż[email protected]
# Usuń utworzony przez nas plik
rm /home/geek/email.txt
Oczywiście możesz uzyskać znacznie więcej informacji o swoim skrypcie, a nawet sprawić, że formatowanie będzie trochę ładniejsze, ale tak wygląda wynik w naszym e-mailu:
Skoro skrypt jest już napisany i przetestowany, możemy użyć crona do automatycznego wykonywania go o tej samej porze każdego dnia. W tym przykładzie skonfigurujemy wysyłanie wiadomości e-mail o godzinie 2:00 każdego ranka, abyśmy mogli przejrzeć dane później tego samego dnia.
$ crontab -e
W przypadku e-maili o godzinie 2:00 dodaj:
0 2 * * * /home/geek/script.sh
Napisaliśmy cały artykuł o plikach crontab, jeśli potrzebujesz więcej pomocy w tej części.
Wysyłanie e-maili z poziomu wiersza poleceń jest możliwe dzięki PowerShell, ale okazało się, że wdrożenie tej funkcji jest o wiele łatwiejsze w przypadku aplikacji innych firm, szczególnie w przypadku korzystania z Gmaila. SendEmail to darmowy program dostępny dla Windows, który sprawia, że integracja z Windows Task Scheduler i Gmailem jest bardzo prosta. Kliknij powyższy link, aby pobrać najnowszą kopię i upewnij się, że korzystasz z wersji obsługiwanej przez TLS.
Po pobraniu SendEmail wyodrębnij plik zip i umieść go w miejscu, w którym możesz przechowywać je tak długo, jak planujesz wysyłać automatyczne wiadomości e-mail. W tym przykładzie będziemy po prostu przechowywać program w C: \ SendEmail
Przetestuj SendEmail, aby szybko zorientować się, jak to działa. Otwórz wiersz polecenia, wpisując polecenie cmd w menu Start lub Uruchom (Ctrl + R).
Po otwarciu wiersza polecenia użyj polecenia change directory, aby przejść do miejsca, w którym zostały zapisane pliki SendEmail.
cd C: \ SendEmail
Teraz możemy spróbować wysłać wiadomość testową za pomocą następującego polecenia:
sendEmail -f nazwa_uż[email protected] -t nazwa_uż[email protected] -s smtp.gmail.com:587 -xu nazwa_użytkownika -xp hasło -u "Testuj temat wiadomości e-mail" -m "To jest wiadomość testowa."
Oczywiście przed wpisaniem polecenia zastąp "nazwa użytkownika" i "hasło" danymi uwierzytelniającymi swojego konta.
Oto co robi powyższe polecenie:
wysłać email
wykonuje program.
-fa
- z adresu
-t
- adresować
-s
- Serwer SMTP
-xu
- Nazwa użytkownika konta
-xp
- hasło do konta
-u
- temat emaila
-m
- treść wiadomości e-mail
Sprawdź swoją skrzynkę odbiorczą, aby upewnić się, że otrzymałeś wiadomość testową, a następnie możemy przejść do pisania skryptu, który prześle nam informacje o serwerze.
Aby w pełni wykorzystać nasz skrypt, zamierzamy napisać go dla PowerShell. Otwórz środowisko Windows PowerShell, wpisując polecenie powershell_ise.exe w wierszu polecenia (Ctrl + R).
Po prawej stronie okna PowerShell ISE możesz wyświetlić listę wszystkich poleceń, które PowerShell może wykonać. To powinno dać ci dobry początek w generowaniu typów informacji, które potrzebujesz zgłosić. W swoim skrypcie możesz również wywoływać programy innych firm, aby uzyskać informacje wyjściowe (np. SendEmail jest aplikacją innej firmy, ale PowerShell i cmd mogą jej używać do wykonywania zadań, których normalnie nie mogą wykonywać).
W naszym przykładowym skrypcie sprawdzimy bieżące użycie dysku na dysku C, pokażemy aktualnie działające procesy i pokażemy wszystkie pliki, które są obecnie udostępniane w sieci.
# Sprawdź miejsce na dysku twardym
echo "C: Drive Usage:"> C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID =" C: "" | Wybierz rozmiar obiektu, FreeSpace >> C: \ SendEmail \ info.txt
# Lista aktualnie uruchomionych procesów
echo "Uruchomione procesy:" >> C: \ SendEmail \ info.txt
pobierz-proces >> C: \ SendEmail \ info.txt
# Lista plików / folderów aktualnie udostępnianych
echo "Udziały SMB:" >> C: \ SendEmail \ info.txt
get-smbshare >> C: \ SendEmail \ info.txt
# Wyślij e-mail
wpisz C: \ SendEmail \ info.txt | C: \ SendEmail \ sendEmail -f nazwa_uż[email protected] -t nazwa_uż[email protected] -s smtp.gmail.com:587 -xu nazwa_użytkownika -xp hasło -u "Informacje o dziennym serwerze"
# Usuń plik, który stworzyliśmy
rm C: \ SendEmail \ info.txt
W tym skrypcie różne informacje są wysyłane do C: \ SendEmail \ info.txt, a następnie tekst w tym dokumencie jest wysyłany do nas pocztą elektroniczną, zanim zostanie usunięty. Zapisz swój skrypt za pomocą rozszerzenia pliku ps1 (plik PowerShell).
Po zakończeniu skryptu uruchom szybki test z monitu Uruchom, aby upewnić się, że działa poprawnie.
Po prostu użyj powershell
polecenie z -plik
argument i podaj ścieżkę do skryptu.
powershell -file "c: \ SendEmail \ daily-email.ps1"
Sprawdź swoją skrzynkę odbiorczą, aby upewnić się, że otrzymałeś wiadomość e-mail - jeśli nie, sprawdź w swoim skrypcie błędy składni. Oto, jak wygląda wygenerowany e-mail z naszego przykładowego skryptu:
Możesz odtwarzać formatowanie (na przykład wyświetlać puste linie między tekstem), aby wyświetlało się ono ładniej na urządzeniu, lub lepiej, możesz użyć programu innej firmy, który wyświetli potrzebne informacje w bardziej czytelnym formacie niż system Windows ( proces pisania skryptów będzie nadal taki sam).
Po opracowaniu załamań w skrypcie można za pomocą programu Windows Task Scheduler zautomatyzować go. Otwórz program Windows Task Scheduler za pomocą menu Start.
Przy otwartym Harmonogramie zadań wybierz Akcja> Utwórz zadanie podstawowe.
Nazwij to zadanie czymś w stylu "Codzienny skrypt e-mailowy" i kliknij przycisk Dalej. Na następnym ekranie wybierz częstotliwość, z jaką chcesz uruchamiać skrypt e-mailowy, prawdopodobnie codziennie. Następnie wybierz czas uruchomienia skryptu i kliknij Dalej.
Teraz powinieneś być w części "Akcja" kreatora, wybierz "Uruchom program" i wpisz ten sam tekst, który wprowadziliśmy w wierszu Uruchom wcześniej, aby przetestować nasz skrypt.
Naciśnij przycisk Dalej, a następnie naciśnij przycisk Tak w tym oknie:
Kliknij Zakończ w ostatnim menu, a skończysz planowanie automatycznych wiadomości e-mail.