Jak automaticky generovat a zasílat statistiky počítače
Je důležité každodenně kontrolovat různé data a statistiky denníků na vašem serveru, ale roste to nudné. Nebylo by hezké dostávat jediný e-mail se všemi důležitými informacemi každý den, takže se ani nemusíte dostat na server, aby zjistil problémy? Tato příručka vám ukáže, jak nakonfigurovat automatizované e-maily v systémech Linux a Windows.
Budeme to zvlášť pokrývat u Ubuntu a Windows 8.1, přičemž Gmail bude používán jako e-mailový server, ze kterého je posílána pošta. Pokud máte jinou verzi systému Linux nebo Windows nebo preferujete jinou e-mailovou službu, měly by být zde pokyny snadno přizpůsobitelné.
Automatizované emaily v systému Linux
Použijeme dva různé balíčky k tomu, ssmtp a mailutils, takže je nainstalujte oběma následujícími příkazy:
$ sudo apt-get nainstalovat ssmtp mailutils
Jakmile jsou nainstalovány, je třeba provést některé změny konfiguračního souboru SSMTP:
$ sudo vi /etc/ssmtp/ssmtp.conf
Upravte soubor s těmito změnami (v případě, že chcete vymazat všechen text v souboru a pokud chcete, zkopírujte / vložte tato nastavení):
# Tato adresa obdrží e-maily, proto zadejte svůj e-mail zde, chcete-li je přijmout.
root@[email protected]
# Zde zadejte e-mailový server (nechte, jako kdybyste používali službu Gmail).
mailhub = smtp.gmail.com: 587
# Jméno domény, ze které bude pošta pocházet.
rewriteDomain = gmail.com
# E-mailová adresa, ze které by tyto e-maily měly být.
hostname@[email protected]
# Nastavení SSL / TLS, které jsou potřebné pro službu Gmail a většinu ostatních poštovních serverů.
UseTLS = Ano
PoužítSTARTTLS = Ano
# Uživatelské jméno a heslo do účtu Gmail.
AuthUser = uživatelské jméno
AuthPass = heslo
# Povolit možnost zadat jinou adresu než je adresa výše.
FromLineOverride = ano
Jakmile dokončíte úpravu souboru, budete chtít změnit oprávnění, protože vaše heslo služby Gmail je uloženo v otevřeném textu.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown username.username /etc/ssmtp/ssmtp.conf
Vždy je bezpečnější kořenit vlastníka souboru, ale pak bychom museli v našem skriptu použít příkaz sudo a vybídli bychom heslo, čímž bychom porazili účel automatizace celého procesu.
Pokud používáte sdílený server a obáváte se, že vaše heslo bude uloženo v otevřeném textu a bude čitelné od kořenu, vytvořte si účet Gmail pro odkládání dat nebo použijte e-mailový server, který na prvním místě nevyžaduje žádný typ ověřování.
Chcete-li se ujistit, že je vše správně nakonfigurováno, vyzkoušejte zkušební e-mail:
$ echo "Testování" mailů "Testování nastavení pošty" [email protected]
Testování bude v těle e-mailu a předmětem bude Testování nastavení pošty. Zkontrolujte e-mail a ujistěte se, že jste ji obdrželi.
Psaní skriptu pro e-maily
Nyní, když jsme schopni odeslat e-maily z příkazového řádku, napište skript, který nám pošle základní informace o našem systému.
#! / bin / bash
# Zkontrolujte prostor na pevném disku
echo "Místo na pevném disku:"> /home/geek/email.txt
df -h >> /home/geek/email.txt
# Seznam uživatelů, kteří jsou přihlášeni
echo "Aktuálně přihlášeni uživatelé:" >> /home/geek/email.txt
kdo >> /home/geek/email.txt
# Seznam aktuálně spuštěných procesů
echo "Spouštěcí procesy:" >> /home/geek/email.txt
ps -e >> /home/geek/email.txt
# Pošlete e-mail
kočka /home/geek/email.txt | mailů "Denní informace o serveru" [email protected]
# Odstraňte soubor, který jsme vytvořili
rm /home/geek/email.txt
Je zřejmé, že se svým skriptem můžete dostat mnohem hlouběji a dokonce i formátování trochu hezčí, ale vypadá to, jak vypadá výstup v našem e-mailu:
Nyní, když je scénář napsán a testován, můžeme použít cron k jeho automatickému spuštění každý den ve stejnou dobu. V tomto příkladu budeme nakonfigurovat e-maily, které budou zasílány každé ráno ve 2:00 ráno, takže můžeme projít data později v ten den.
$ crontab -e
Pro emaily ve 2:00 AM přidejte:
0 2 * * * /home/geek/script.sh
Napsali jsme celý článek o souborech crontab, pokud potřebujete další pomoc s touto částí.
Automatizované e-maily ve Windows
Odesílání e-mailů na příkazovém řádku je možné pomocí služby PowerShell, ale zjistilo se, že implementace této funkce je mnohem jednodušší u aplikací třetích stran, zejména při používání služby Gmail. SendEmail je bezplatný program dostupný pro Windows, díky němuž je integrace se systémem Windows Task Scheduler a Gmail vánkem. Klepnutím na výše uvedený odkaz stáhnete nejnovější kopii a ujistěte se, že jste chytili verzi podporovanou protokolem TLS.
Jakmile si aplikaci SendEmail stáhnete, extrahujte soubor zip a vložte obsah někde, kde je můžete uložit tak dlouho, dokud plánujete odeslat automatizované e-maily. V tomto příkladu uložíme program do C: \ SendEmail
Vyzkoušejte SendEmail, abyste získali pocit, jak to funguje. Otevřete příkazový řádek zadáním příkazu cmd do nabídky Start nebo Run (Ctrl + R).
Otevřete příkazový řádek a použijte příkaz změnit adresář a přejděte na místo uložení souborů SendEmail.
cd C: \ SendEmail
Nyní můžeme zkusit odeslat zkušební e-mail s následujícím příkazem:
sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu uživatelské jméno -xp heslo -u "Testovat předmět e-mailu" -m "Toto je testovací e-mail."
Je zřejmé, že před spuštěním příkazu nahraďte "uživatelské jméno" a "heslo" s pověřeními účtu.
Zde je to, co výše uvedený příkaz skutečně dělá:
poslat e-mailem
spustí program.
-F
- z adresy
-t
- na adresu
-s
- SMTP server
-xu
- uživatelské jméno účtu
-xp
- heslo k účtu
-u
- předmět emailu
-m
- text těla e-mailu
Zkontrolujte složku doručené pošty, abyste se ujistili, že jste obdrželi zkušební e-mail, a pak můžeme pokračovat v psaní skriptu, který nám pošle informace o serveru.
Psaní skriptu pro e-maily
Chcete-li co nejlépe využít náš skript, napíšeme to pro PowerShell. Otevřete okno Windows PowerShell ISE zadáním příkazu powershell_ise.exe do příkazu Spustit (Ctrl + R).
Na pravé straně okna PowerShell ISE můžete zobrazit všechny příkazy, které je PowerShell schopen provést. To by mělo dát dobrý začátek při vytváření typů informací, které potřebujete nahlásit. Ve vašem skriptu můžete také volat na programy třetích stran, aby mohly vygenerovat také informace (tj. SendEmail je aplikace třetí strany, ale PowerShell a cmd ji mohou použít k provádění úkolů, které obvykle nemohou).
Pro náš příklad skript zkontrolujeme aktuální využití disku jednotky C, zobrazíme aktuálně spuštěné procesy a zobrazíme všechny soubory, které jsou v současnosti sdíleny v síti.
# Zkontrolujte prostor na pevném disku
echo "C: Použití jednotky:"> C: \ SendEmail \ info.txt
Získat-WmiObject win32_LogicalDisk -Filter "DeviceID =" C: "" | Vyberte velikost objektu, FreeSpace >> C: \ SendEmail \ info.txt
# Seznam aktuálně spuštěných procesů
echo "Běžící procesy:" >> C: \ SendEmail \ info.txt
get-process >> C: \ SendEmail \ info.txt
# Seznam aktuálně sdílených souborů / složek
echo "Sdílení SMB:" >> C: \ SendEmail \ info.txt
get-smbshare >> C: \ SendEmail \ info.txt
# Pošlete e-mail
zadejte C: \ SendEmail \ info.txt | C: \ SendEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu uživatelské jméno -xp heslo -u "Denní informace o serveru"
# Vymažte soubor, který jsme vytvořili
rm C: \ SendEmail \ info.txt
V tomto skriptu jsou do C: \ SendEmail \ info.txt vyvedeny různé informace a před tím, než se zmizí, je text v tomto dokumentu odeslán emailem. Uložte skript pomocí příponu souboru ps1 (soubor PowerShell).
Po dokončení skriptu spusťte rychlý test z příkazu Spustit, abyste se ujistili, že funguje správně.
Stačí použít powerhell
příkaz s -soubor
argument a určete cestu ke skriptu.
powershell -soubor "c: \ SendEmail \ daily-email.ps1"
Zkontrolujte doručenou poštu a ujistěte se, že jste obdrželi e-mail - pokud ne, podívejte se na skript pro chyby syntaxe. Zde je příklad vygenerovaného e-mailu z příkladu skriptu:
Můžete přehrávat formátování (například opakování prázdných řádků mezi textem), aby se zařízení zobrazovalo lépe, nebo ještě lépe, můžete použít program třetí strany, který bude zobrazovat potřebné informace ve formátu, který je čitelnější než systém Windows ( skriptovací proces bude stále stejný).
Poté, co jste ve skriptu vyřešili překážky, můžete jej použít k automatickému použití programu Plánovač úloh systému Windows. Otevřete program Plánovač úloh systému Windows pomocí nabídky Start.
Otevřete Plánovač úloh, vyberte možnost Akce> Vytvořit základní úlohu.
Název tohoto úkolu pojmenujte "Denní e-mailový skript" a klikněte na tlačítko Další. Na další obrazovce vyberte frekvenci, se kterou chcete spouštět váš emailový skript, pravděpodobně denně. Poté vyberte čas, který chcete spouštět, a stiskněte další.
Nyní byste měli být v části "Akce" průvodce, zvolte "Spustit program" a zadejte stejný text, který jsme zadali do příkazu Spustit dříve, abychom testovali náš skript.
Stiskněte další a v tomto okně klepněte na tlačítko Ano:
V poslední nabídce klikněte na tlačítko Dokončit a dokončíte plánování automatických e-mailů.