If-Koubou

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

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

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.

Automatyczne 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ą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ć.

[email protected]

# 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.

[email protected]

# 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ś.

Pisanie skryptu dla wiadomości e-mail

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.

Automatyczne wiadomości e-mail w systemie Windows

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.

Pisanie skryptu dla wiadomości e-mail

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.