11Jul
Het is belangrijk om elke dag verschillende loggegevens en statistieken op uw server te controleren, maar het wordt saai. Zou het niet leuk zijn om elke dag een enkele e-mail met alle hoogtepunten te ontvangen, dus je hoeft niet eens op de server te komen om te controleren op problemen? In deze handleiding wordt uitgelegd hoe u geautomatiseerde e-mails kunt configureren voor Linux en Windows.
We zullen dit specifiek behandelen voor Ubuntu en Windows 8.1, waarbij Gmail wordt gebruikt als de e-mailserver waartoe mail wordt verzonden. Als u een andere versie van Linux of Windows hebt, of liever een andere e-mailservice gebruikt, moeten de instructies hier eenvoudig aan te passen zijn.
Geautomatiseerde e-mails in Linux
We gaan twee verschillende pakketten gebruiken om dit te bereiken, ssmtp en mailutils, dus installeer ze allebei met de volgende opdracht:
$ sudo apt-get installeer ssmtp mailutils
Zodra deze zijn geïnstalleerd, hebben weom een aantal wijzigingen aan te brengen in het SSMTP-configuratiebestand:
$ sudo vi /etc/ssmtp/ ssmtp.conf
Bewerk het bestand met deze wijzigingen( het is veilig om gewoon alle tekst in het bestand te wissen en deze instellingen te kopiëren en plakken, als u dat wilt):
# Dit adres zal de e-mails ontvangen, dus voer hier uw eigen e-mailadres in als u deze wilt ontvangen.
# Specificeer hier de e-mailserver( laten zoals ze is als u Gmail gebruikt).
mailhub = smtp.gmail.com: 587
# De domeinnaam waarvan de mail afkomstig zal zijn.
rewriteDomain = gmail.com
# Het e-mailadres waar deze e-mails vandaan zouden moeten komen.
# SSL / TLS-instellingen vereist voor Gmail en de meeste andere mailservers.
UseTLS = Ja
GebruikSTARTTLS = Ja
# De gebruikersnaam en het wachtwoord voor uw Gmail-account.
AuthUser = gebruikersnaam
AuthPass = wachtwoord
# Toestaan dat een ander adres kan worden opgegeven dan hierboven.
FromLineOverride = yes
Als u klaar bent met het bewerken van het bestand, moet u de rechten wijzigen omdat uw Gmail-wachtwoord als leesbare tekst is opgeslagen.
$ sudo chmod 640 /etc/ssmtp/ ssmtp.conf
$ sudo chown gebruikersnaam.username /etc/ssmtp/ ssmtp.conf
Het is altijd veiliger om root de eigenaar van het bestand te maken, maar dan zouden we de opdracht sudo in ons script moeten gebruiken en zou hetons vragen om een wachtwoord en daarmee het doel van het automatiseren van dit hele proces verslaan.
Als u een gedeelde server gebruikt en u zich zorgen maakt over het feit dat uw wachtwoord in platte tekst wordt opgeslagen en door root kan worden gelezen, maakt u een wegwerp-Gmail-account of gebruikt u een e-mailserver die in de eerste plaats geen enkele vorm van authenticatie vereist.
Laten we, om er zeker van te zijn dat alles correct is geconfigureerd, een testmail proberen:
$ echo "Testen" |mail -s "Testen van mail instellen" [email protected]
"Testen" zal in het hoofdgedeelte van de e-mail staan en het onderwerp zal "Testen van mail instellen." Controleer uw e-mail om te controleren of u deze hebt ontvangen.
Een script voor de e-mails schrijven
Nu we e-mails van de opdrachtregel kunnen verzenden, laten we een script schrijven dat ons wat basisinformatie over ons systeem bezorgt.
#!/bin/ bash
# Controleer de ruimte op de harde schijf
echo "Vaste-schijfruimte:" & gt;/home/geek/ email.txt
df -h & gt; & gt;/home/geek/ email.txt
# Lijst van gebruikers die zijn aangemeld bij de
-echo "Gebruikers die momenteel zijn aangemeld:" & gt; & gt;/home/geek/ email.txt
who & gt; & gt;/home/geek/ email.txt
# Lijst die momenteel wordt uitgevoerd, verwerkt
-echo "Actieve processen:" & gt; & gt;/home/geek/ email.txt
ps -e & gt; & gt;/home/geek/ email.txt
# Verstuur de e-mail
cat /home/geek/ email.txt |mail -s "Dagelijkse serverinformatie" [email protected]
# Verwijder het bestand dat we hebben gemaakt
rm /home/geek/ email.txt
Uiteraard kun je veel meer diepgang krijgen met je script en zelfs de opmaak een beetje leuker maken, maardit is hoe de uitvoer eruit ziet in onze e-mail:
Nu het script is geschreven en getest, kunnen we cron gebruiken om het automatisch elke dag op hetzelfde tijdstip automatisch uit te voeren. In dit voorbeeld configureren we de e-mail die elke ochtend om 2:00 uur wordt verzonden, zodat we de gegevens later die dag kunnen doornemen.
$ crontab -e
Voor e-mails van 02:00 uur, voeg toe:
0 2 * * * /home/geek/ script.sh
We hebben een heel artikel over crontab-bestanden geschreven als u meer hulp nodig hebt met dit onderdeel.
Geautomatiseerde e-mails in Windows
Het verzenden van e-mails op de opdrachtregel is mogelijk via PowerShell, maar we hebben gemerkt dat het implementeren van deze functionaliteit een stuk eenvoudiger is met apps van derden, vooral wanneer u Gmail gebruikt. SendEmail is een gratis programma beschikbaar voor Windows dat integratie met Windows Task Scheduler en Gmail in een handomdraai mogelijk maakt. Klik op de bovenstaande link om de nieuwste versie te downloaden en zorg ervoor dat u de TLS-ondersteunde versie haalt.
Als u SendEmail eenmaal hebt gedownload, extraheer dan het zip-bestand en plaats de inhoud ergens waar u ze kunt opslaan zolang u van plan bent geautomatiseerde e-mails te verzenden. In dit voorbeeld bewaren we het programma gewoon in C: \ SendEmail
Laten we SendEmail testen om snel een idee te krijgen hoe het werkt. Open een opdrachtprompt door cmd in het menu Start of Uitvoeren( Ctrl + R) te typen.
Met de opdrachtprompt geopend, gebruikt u de opdracht change directory om naar de locatie te gaan waar u de SendEmail-bestanden hebt opgeslagen.
cd C: \ SendEmail
Nu kunnen we proberen een testmail te sturen met de volgende opdracht:
sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu gebruikersnaam -xppassword -u "Test email onderwerp" -m "Dit is een test email."
Vervang "gebruikersnaam" en "wachtwoord" uiteraard door uw accountgegevens voordat u de opdracht uitvoert.
Dit is wat de bovenstaande opdracht feitelijk doet:
sendEmail voert het programma uit.
-f - van adres
-t - adresseren
-s - SMTP server
-xu - account gebruikersnaam
-xp - account wachtwoord
-u - email onderwerp
-m - email body tekst
Controleer uw inbox om zeker te zijnje hebt de testmail ontvangen en dan kunnen we verder gaan met het schrijven van een script dat ons serverinformatie zal sturen.
Een script voor de e-mails schrijven
Om het meeste uit ons script te halen, gaan we het voor PowerShell schrijven. Open Windows PowerShell ISE door powershell_ise.exe in een Run-prompt in te voeren( Ctrl + R).
Aan de rechterkant van het PowerShell ISE-venster kunt u elke opdracht weergeven die PowerShell kan uitvoeren. Dit zou u een goede start moeten geven bij het genereren van de soorten informatie die u moet melden. In uw script kunt u ook programma's van derden aanroepen om informatie ook weer te geven( dat wil zeggen, SendEmail is een app van derden, maar PowerShell en cmd kunnen het gebruiken om taken uit te voeren die zij normaal niet kunnen uitvoeren).
Voor ons voorbeeldscript controleren we het huidige schijfgebruik van de C-schijf, tonen de momenteel lopende processen en tonen alle bestanden die momenteel worden gedeeld via het netwerk.
# Controleer ruimte op harde schijf
echo "C: Drive Gebruik:" & gt;C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" |Selecteer-objectgrootte, FreeSpace & gt; & gt;C: \ SendEmail \ info.txt
# Lijst die momenteel wordt uitgevoerd, verwerkt
-echo "Actieve processen:" & gt; & gt;C: \ SendEmail \ info.txt
get-proces & gt; & gt;C: \ SendEmail \ info.txt
# Lijst van de bestanden / mappen die momenteel worden gedeeld
-echo "SMB-shares:" & gt; & gt;C: \ SendEmail \ info.txt
get-smbshare & gt; & gt;C: \ SendEmail \ info.txt
# Stuur de e-mail
type C: \ SendEmail \ info.txt |C: \ SendEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu gebruikersnaam -xp wachtwoord -u "Dagelijkse serverinformatie"
# Verwijder het bestand dat we gemaakt hebben
rm C: \ SendEmail \ info.txt
In dit script wordt verschillende informatie uitgevoerd naar C: \ SendEmail \ info.txt, waarna de tekst in dat document naar ons wordt gemaild voordat deze wordt verwijderd. Sla je script op met een PS1-bestandsextensie( PowerShell-bestand).
Nadat uw script is voltooid, voert u een snelle test uit vanaf een prompt uitvoeren om te controleren of deze correct werkt.
Gebruik gewoon de powershell-opdracht met een -file-argument en specificeer het pad naar uw script.
powershell -bestand "c: \ SendEmail \ daily-email.ps1"
Controleer uw inbox om te controleren of u de e-mail hebt ontvangen - zo niet, bekijk dan uw script voor syntaxisfouten. Dit is wat de gegenereerde e-mail van ons voorbeeldscript eruitziet:
U kunt spelen met de opmaak( zoals het echoën van lege regels tussen tekst) om deze mooier weer te geven op uw apparaat, of beter nog, u kunt een programma van derden gebruiken datvoer de benodigde info uit in een beter leesbaar formaat dan Windows doet( het scriptingproces zal nog steeds hetzelfde zijn).
Als u eenmaal de knikken in uw script hebt uitgewerkt, kunt u Windows Task Scheduler gebruiken om het te automatiseren. Open Windows Task Scheduler via het menu Start.
Met de Taakplanner geopend, selecteert u Actie & gt;Maak een basistaak.
Geef deze taak een naam als "Dagelijks e-mailscript" en klik op Volgende. Selecteer in het volgende scherm de frequentie waarmee u wilt dat uw e-mail script wordt uitgevoerd, waarschijnlijk dagelijks. Kies vervolgens het tijdstip waarop het script moet worden uitgevoerd en klik op Volgende.
Nu zou je in het "Actie" -deel van de wizard moeten staan, "Start een programma" selecteren en dezelfde tekst invoeren die we eerder in de Run-prompt hadden ingevoerd om ons script te testen.
Druk op Volgende en vervolgens op Ja in dit venster:
Klik op Voltooien in het laatste menu en klaar bent met het plannen van uw automatische e-mails.