Cum se generează automat și se e-mail Statistici de computere
Este important să verificați diverse date și statistici de jurnal pe serverul dvs. în fiecare zi, dar devine plictisitor. Nu ar fi frumos să primiți un singur e-mail cu toate evidențierile zilnice, astfel încât nici măcar nu trebuie să ajungeți pe server pentru a verifica problemele? Acest ghid vă va arăta cum să configurați e-mailurile automate pe Linux și Windows.
Vom acoperi în mod specific acest lucru pentru Ubuntu și Windows 8.1, Gmail fiind folosit ca server de e-mail la care este trimis un e-mail. Dacă aveți o altă versiune de Linux sau Windows sau preferați să utilizați un alt serviciu de e-mail, instrucțiunile de aici ar trebui să fie ușor de adaptabil.
E-mailuri automatizate în Linux
Vom folosi două pachete diferite pentru a realiza acest lucru, ssmtp și mailutils, deci instalați ambele cu următoarea comandă:
$ sudo apt-get instala ssmtp mailutils
Odată ce acestea sunt instalate, trebuie să efectuăm câteva modificări în fișierul de configurare SSMTP:
$ sudo vi /etc/ssmtp/ssmtp.conf
Editați fișierul cu aceste modificări (este posibil să ștergeți doar întregul text din fișier și să copiați / inserați aceste setări, dacă doriți):
# Această adresă va primi e-mailurile, prin urmare introduceți propriul e-mail aici dacă doriți să le primiți.
# Specificați serverul de e-mail aici (lăsați ca și cum ați utiliza Gmail).
mailhub = smtp.gmail.com: 587
# Numele domeniului de la care va veni poșta.
rewriteDomain = gmail.com
# Adresa de e-mail la care ar trebui să fie aceste e-mailuri.
# Setări SSL / TLS, necesare pentru Gmail și majoritatea altor servere de mail.
UseTLS = Da
UseSTARTTLS = Da
# Numele de utilizator și parola în contul Gmail.
AUTHUSER = utilizator
AuthPass = parola
# Permiteți abilitatea de a specifica o adresă diferită de cea de mai sus.
FromLineOverride = da
După ce ați terminat de editat fișierul, veți dori să modificați permisiunile, deoarece parola Gmail este stocată în text simplu.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown nume utilizator.username /etc/ssmtp/ssmtp.conf
Este întotdeauna mai sigur să facem root proprietarul fișierului, dar atunci ar trebui să folosim comanda sudo în scriptul nostru și ne va cere să introducem o parolă, învingându-ne astfel scopul automatizării întregului proces.
Dacă utilizați un server partajat și sunteți îngrijorat de faptul că parola dvs. este stocată în text simplu și ușor de citit de către root, creați un cont Gmail de tip throwaway sau utilizați un server de e-mail care nu necesită nici un fel de autentificare în primul rând.
Pentru a vă asigura că totul este configurat corect, să încercăm un e-mail de test:
$ echo "Testarea" mail-uri "Testarea setării e-mailului" [email protected]
Testarea va fi în corpul e-mail-ului și subiectul va fi "Testarea e-mailului". Verificați-vă e-mailul pentru a vă asigura că l-ați primit.
Scrierea unui script pentru e-mailuri
Acum, că suntem capabili să trimitem e-mailuri din linia de comandă, să scriem un script care ne va trimite câteva informații de bază despre sistemul nostru.
#! / Bin / bash
# Verificați spațiul pe hard disk
echo "Spațiu pe hard disk:"> /home/geek/email.txt
df -h >> /home/geek/email.txt
# Listează utilizatorii care sunt conectați
echo "Utilizatorii conectați în prezent:" >> /home/geek/email.txt
care >> /home/geek/email.txt
# Listați procesele care rulează în prezent
echo "Procese de rulare:" /home/geek/email.txt
ps -e >> /home/geek/email.txt
# Trimiteți e-mailul
cat /home/geek/email.txt | mail-uri "Informații zilnice despre server" [email protected]
# Ștergeți fișierul pe care l-am creat
rm /home/geek/email.txt
Evident, puteți obține mult mai mult în profunzime cu scenariul dvs. și chiar faceți formatarea puțin mai plăcută, dar acesta este aspectul de ieșire din e-mailul nostru:
Acum, că scriptul este scris și testat, putem folosi cronul pentru a executa automat în același timp în fiecare zi. În acest exemplu, vom configura adresa de e-mail care va fi trimisă în 2:00 AM în fiecare dimineață, astfel încât să putem trece prin datele mai târziu în acea zi.
$ crontab -e
Pentru e-mailurile de 2:00 AM, adăugați:
0 2 * * * /home/geek/script.sh
Am scris un întreg articol despre fișierele crontab dacă aveți nevoie de mai mult ajutor pentru această parte.
E-mailuri automate în Windows
Trimiterea de e-mailuri la linia de comandă este posibilă prin intermediul PowerShell, dar am constatat că implementarea acestei funcționalități este mult mai ușoară cu aplicațiile terță parte, în special atunci când se utilizează Gmail. SendEmail este un program gratuit disponibil pentru Windows, care face integrarea cu Windows Task Scheduler și Gmail un breeze. Faceți clic pe linkul de mai sus pentru a descărca cea mai recentă copie și asigurați-vă că ați luat versiunea acceptată de TLS.
Odată ce ați descărcat SendEmail, extrageți fișierul zip și puneți conținutul undeva pe care îl puteți stoca atât timp cât intenționați să trimiteți e-mailuri automate. În acest exemplu, vom stoca programul în C: \ SendEmail
Să testați SendEmail pentru a vă simți rapid cum funcționează. Deschideți un prompt de comandă tastând cmd în meniul Start sau Run (Ctrl + R).
Cu linia de comandă deschisă, utilizați comanda de modificare a directorului pentru a naviga la locul în care ați stocat fișierele SendEmail.
CD-ul C: \ SendEmail
Acum, putem încerca să trimitem un e-mail de test cu următoarea comandă:
sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu username -xp password -u "Testare subiect e-mail" -m "Acesta este un e-mail de test."
Evident, înlocuiți "nume de utilizator" și "parolă" cu acreditările contului înainte de a executa comanda.
Iată ce face de fapt comanda de mai sus:
Trimite email
execută programul.
-f
- de la adresa
-T
- pentru a aborda
-s
- Server SMTP
-xu
- numele contului
-XP
- parola contului
-u
- Subiectul emailului
-m
- e-mail text corp
Verificați căsuța poștală pentru a vă asigura că ați primit e-mailul de testare și apoi putem trece la scrierea unui script care ne va trimite informații despre server.
Scrierea unui script pentru e-mailuri
Pentru a profita la maximum de scenariul nostru, o vom scrie pentru PowerShell. Deschideți Windows PowerShell ISE tastând powershell_ise.exe într-o comandă prompt (Ctrl + R).
În partea dreaptă a ferestrei PowerShell ISE, puteți să listați fiecare comandă pe care PowerShell este capabilă să o execute. Acest lucru ar trebui să vă ofere un început bun în generarea tipurilor de informații de care aveți nevoie. În scriptul dvs. puteți de asemenea să apelați la programe terță parte pentru a afișa și informații (de exemplu, SendEmail este o aplicație terță parte, dar PowerShell și cmd îl pot utiliza pentru a îndeplini sarcinile pe care nu le pot folosi în mod normal).
Pentru scriptul nostru de exemplu, vom verifica utilizarea curentă a discului de pe unitatea C, vom arăta procesele care rulează în prezent și vom afișa toate fișierele care sunt în prezent distribuite în rețea.
# Verificați spațiul pe hard disk
ecou "C: Utilizare unitate:"> C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID =" C: "" Selectați-Dimensiune obiect, FreeSpace >> C: \ SendEmail \ info.txt
# Listați procesele care rulează în prezent
echo "Procese de rulare:" >> C: \ SendEmail \ info.txt
primiți procesul >> C: \ SendEmail \ info.txt
# Se afișează fișierele / directoarele în comun
echo "acțiuni SMB:" >> C: \ SendEmail \ info.txt
get-smbshare >> C: \ Trimiteremail \ info.txt
# Trimiteți e-mailul
tastați C: \ SendEmail \ info.txt | C: \ Trimiteți e-mail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu nume utilizator -xp parolă -u "Informații zilnice despre server"
# Ștergeți fișierul pe care l-am făcut
rm C: \ SendEmail \ info.txt
În acest script, sunt trimise mai multe informații în C: \ SendEmail \ info.txt, iar textul din acel document este trimis prin e-mail pentru noi înainte de a fi șters. Salvați scriptul cu o extensie de fișier ps1 (fișier PowerShell).
Cu script-ul terminat, executați un test rapid de la un prompt de execuție pentru a vă asigura că funcționează corect.
Folosiți doar PowerShell
comanda cu -fişier
argument și specificați calea către scenariul dvs..
powershell -file "c: \ Trimiteți e-mail \ daily-email.ps1"
Verificați căsuța de e-mail pentru a vă asigura că ați primit e-mailul; dacă nu, examinați scriptul pentru erori de sintaxă. Iată ce arată e-mailul generat din scenariul nostru de exemplu:
Puteți reda formatul (cum ar fi etichetarea liniilor goale între text) pentru ca acesta să fie afișat mai bine pe dispozitiv sau, mai bine, puteți utiliza un program terță parte care va transmite informațiile necesare într-un format mai ușor de citit decât Windows procesul de scripting va continua să fie același).
Odată ce ați elaborat legăturile din scriptul dvs., puteți utiliza Windows Task Scheduler pentru a-l automatiza. Deschideți Programatorul de activități Windows prin meniul Start.
Cu Task Scheduler deschis, selectați Acțiune> Creare sarcină de bază.
Denumiți această sarcină ceva de genul "script de e-mail zilnic" și faceți clic pe următorul. În ecranul următor, selectați frecvența cu care doriți ca scriptul dvs. de e-mail să ruleze, probabil zilnic. Apoi, alegeți timpul în care doriți ca scriptul să ruleze și apăsați următorul.
Acum ar trebui să vă aflați în partea "Acțiune" a expertului, selectați "Porniți un program" și introduceți același text pe care l-am introdus în promptul de execuție mai devreme pentru a testa scriptul.
Apăsați pe Următorul și apoi pe Da pe această fereastră:
Faceți clic pe Finalizare din ultimul meniu și ați terminat programarea e-mailurilor automate.