11Jul

Jak automatycznie generować i wysyłać statystyki komputerów

Ważne jest, aby codziennie sprawdzać różne dane dziennika i statystyki na serwerze, ale staje się to bardzo uciążliwe. 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 konkretnie omawiać to w Ubuntu i Windows 8.1, przy czym Gmail jest używany jako serwer pocztowy, 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.

Zautomatyzowane wiadomości e-mail w systemie Linux

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ącej komendy:

$ sudo apt-get install ssmtp mailutils

Po ich zainstalowaniu potrzebujemyaby wprowadzić pewne zmiany w pliku konfiguracyjnym SSMTP:

$ sudo vi /etc/ssmtp/ ssmtp.conf

Edytuj plik z tymi zmianami( bezpiecznie można po prostu usunąć cały tekst z pliku i skopiować / wkleić te ustawienia, jeśli chcesz):

# Adres ten będzie otrzymywać wiadomości e-mail, więc wpisz tutaj swój adres e-mail, jeśli chcesz je otrzymywać.

[email protected]

# Określ serwer poczty e-mail tutaj( 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.

[email protected]

# Ustawienia SSL / TLS wymagane dla Gmaila i większości innych serwerów pocztowych.

UseTLS = Yes

UseSTARTTLS = Yes

# Nazwa użytkownika i hasło do konta Gmail.

AuthUser = nazwa użytkownika

AuthPass = hasło

# Umożliwia określenie 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 zapisane w postaci zwykłego tekstu.

$ sudo chmod 640 /etc/ssmtp/ ssmtp.conf

$ sudo chown nazwaużytkownika.username /etc/ssmtp/ ssmtp.conf

Zawsze jest bezpieczniej, aby rootować właściciela pliku, ale wtedy musielibyśmy użyć polecenia sudo w naszym skrypcie i byłoby topoproś nas o hasło, tym samym pokonując cel automatyzacji tego całego procesu.

Jeśli korzystasz z serwera współdzielonego 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, wypróbuj testowy adres 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ś.

Pisanie skryptu dla wiadomości e-mail

Teraz, gdy jesteśmy już w stanie wysyłać wiadomości e-mail z wiersza poleceń, napiszmy skrypt, który prześle nam podstawowe informacje o naszym systemie.

#!/bin/ bash

# Sprawdź dysk twardy

echo "Miejsce na dysku twardym:" & gt;/home/geek/ email.txt

df -h & gt; & gt;/home/geek/ email.txt

# Lista użytkowników zalogowanych w

echo "Użytkownicy aktualnie zalogowani:" & gt; & gt;/home/geek/ email.txt

kto & gt;/home/geek/ email.txt

# Lista aktualnie uruchomionych procesów

echo "Uruchomione procesy:" & gt;/home/geek/ email.txt

ps -e & gt; & gt;/home/geek/ email.txt

# Wyślij e-mail

cat /home/geek/ email.txt |mail -s "Codzienna informacja o serwerze" nazwa_uż[email protected]

# Usuń utworzony przez nas plik

rm /home/geek/ email.txt

Oczywiście możesz uzyskać dużo więcej informacji o swoim skrypcie, a nawet sprawić, że formatowanie będzie trochę ładniejsze, aletak wyglądają dane wyjściowe w naszym e-mailu:

Po napisaniu i przetestowaniu skryptu 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

Dla e-maili 2:00 AM dodaj:

0 2 * * * /home/geek/ script.sh

Napisaliśmy cały artykuł o plikach crontab, jeśli potrzebujesz więcej pomocy z tą częścią.

Automatyczne wiadomości e-mail w systemie Windows

Wysyłanie wiadomości e-mail z poziomu wiersza poleceń jest możliwe za pośrednictwem programu PowerShell, ale odkryliśmy, że wdrażanie tej funkcji jest znacznie ł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

. Przetestujmy 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 -xppassword -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:

sendEmail wykonuje program.

-f - z adresu

-t - do adresu

-s - Serwer SMTP

-xu - nazwa użytkownika konta

-xp - hasło konta

-u - temat wiadomości e-mail

-m - treść wiadomości e-mail

Sprawdź swoją skrzynkę odbiorczą, aby upewnić sięotrzymałeś wiadomość testową, a następnie możemy przejść do pisania skryptu, który prześle nam informacje o serwerze.

Pisanie skryptu dla wiadomości e-mail

Aby uzyskać jak najwięcej z naszego skryptu, 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ć).

Dla naszego przykładowego skryptu 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ź przestrzeń dyskową

echo "C: Drive Usage:" & gt;C: \ SendEmail \ info.txt

Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" |Wybierz rozmiar obiektu, FreeSpace & gt; & gt;C: \ SendEmail \ info.txt

# Lista aktualnie uruchomionych procesów

echo "Uruchomione procesy:" & gt;C: \ SendEmail \ info.txt

pobierz-proces & gt; & gt;C: \ SendEmail \ info.txt

# Lista plików / folderów aktualnie udostępnianych

echo "Udziały SMB:" & gt;C: \ SendEmail \ info.txt

get-smbshare & gt; & gt;C: \ SendEmail \ info.txt

# Wyślij wiadomość 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 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 ukończeniu skryptu uruchom szybki test z monitu Uruchom, aby upewnić się, że działa poprawnie.

Wystarczy użyć polecenia powershell z argumentem -file i określić ś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ź swój skrypt pod kątem błędów składniowych. Oto, jak wygląda wygenerowana wiadomość e-mail z naszego przykładowego skryptu:

Możesz odtwarzać z formatowaniem( na przykład wyświetlać puste linie między tekstem), aby wyświetlać je lepiej na swoim urządzeniu, lub lepiej, ale możesz użyć programu innej firmy, który będziewyprowadź potrzebne informacje w bardziej czytelnym formacie niż Windows( proces skryptowania 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 & gt;Utwórz podstawowe zadanie.

Nazwij to zadanie czymś w rodzaju "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.