Ich hatte mal die Aufgabe eine einfache Lösung zur Benachrichtigung per Mail bei Dateierstellung zu finden. Gebraucht wurde dass für Backup-Dateien die per FTP auf ein Windows-System hochgeladen wurden. Ich habe das als Powershell-Script gelöst dass einfach alle Stunde ausgeführt wird.
Hier mal der Code des Scriptes:
#Email-Funktion function sendmail($Betreff,$body) { $SmtpClient = new-object system.net.mail.smtpClient("smtp.email-server.local", 587) $MailMessage = New-Object system.net.mail.mailmessage $SmtpClient.Credentials = New-Object System.Net.NetworkCredential("benutzername", "kennwort") $SmtpClient.EnableSsl = $true $mailmessage.from = "absender@e-mail.local" $mailmessage.To.add("ziel@e-mail.local") $mailmessage.Subject = $subject $MailMessage.IsBodyHtml = $true $mailmessage.Body = $body $smtpclient.Send($mailmessage) } #Pfadangabe $path = "D:\Backup" if (!$path) {break} if ($path.length -gt 3) {$path=$path + "\"} #LogFile $LogFile = "D:\Backup-log.log" #Ueberwachung $date1Hours = (Get-Date).AddHours(-1) $data = Get-ChildItem $path -recurse -filter "*.tgz" | where-object {$_.CreationTime -gt $date1Hours -or $_.LastWriteTime -gt $date1hours } foreach ($file in $data) { if ($file) { $filepath = $file.fullname $pathname = $filepath.split("\")[-2] $dataname = $filepath.split("\")[-1] $filesize = $file.Length/1mb $out = "In " + $pathname + " wurde ein Backup erstellt. Die Datei: " + $dataname + " wurde am " + $file.CreationTime + " erstellt." + " Größe: " + $filesize + " MB" write-host $out #LogFile schreiben - anhängend $out | Out-File $LogFile -append #Email-Text $subject = "Backup von " + $pathname + ". Größe: " + $filesize + " MB" $body = "In " + $pathname + " wurde ein Backup erstellt. Die Datei: " + $dataname + " (Größe: " + $filesize + "MB)" + " wurde am " + $file.CreationTime + " erstellt." #Email-Senden sendmail $Betreff $body } }
Die Ordner unter D:\backup heißen so wie die System die gesichert wurden – deshalb steht im Betreff der Mail sowas wie: „Backup von Web-Server-1. Größe: 2568 MB“. So kann man das auch schön zuordnen.
Das Script durchsucht die Ordner und filtert alle Dateien mit .tgz aus die jünger wie 1 Stunde sind – und schickt dann für jede Datei die E-Mail.
Ein wenig Quick-and-Dirty – aber hat gemacht was es soll 🙂