Główna » jak » Jak automatycznie generować i wysyłać statystyki komputerów

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

    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 Ci, 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 poczty 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 dokonać pewnych zmian 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 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 = 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 zapisane w postaci zwykłego tekstu.

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

    $ sudo chown nazwa_uż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, a to by poprosiło nas o hasło, tym samym pokonując cel automatyzacji 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, 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 się upewnić, ż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 wiadomość 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żna uzyskać znacznie więcej szczegółów w swoim skrypcie, a nawet sprawić, że formatowanie będzie trochę przyjemniejsze, 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 e-mail, który będzie wysyłany o 2:00 rano każdego ranka, abyśmy mogli przeglądać 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 z tą 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 stwierdziliśmy, że wdrożenie tej funkcji jest znacznie łatwiejsze w przypadku aplikacji firm trzecich, szczególnie w przypadku korzystania z Gmaila. SendEmail to darmowy program dostępny dla systemu 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 "username" i "password" swoimi 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 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 programu PowerShell ISE można wyświetlić listę wszystkich poleceń, które program 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: "" | Rozmiar Select-Object, FreeSpace >> C: \ SendEmail \ info.txt

    # Lista aktualnie uruchomionych procesów

    echo "Uruchomione procesy:" >> C: \ SendEmail \ info.txt

    get-process >> 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 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ń utworzony przez nas plik

    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 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 echo pustych linii między tekstem), aby lepiej wyświetlało się na urządzeniu, lub lepiej, możesz użyć programu innej firmy, który wypisze 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 Harmonogram zadań systemu Windows 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 obok. Na następnym ekranie wybierz częstotliwość, z którą 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 "Rozpocznij program" i wpisz ten sam tekst, który wprowadziliśmy do polecenia Uruchom wcześniej, aby przetestować nasz skrypt.

    Naciśnij przycisk Dalej, a następnie naciśnij Tak w tym oknie:

    Kliknij Zakończ w ostatnim menu, a skończysz planowanie automatycznych wiadomości e-mail.