stern511
Goto Top

Automatsch Email aus Texteditor versenden

Liebe IT Wissenden,

folgende Herausforderung:

Die Störmeldung der Gebäudeleittechnik, der von mir betreuten Immobilien, läuft derzeit eher schlecht als recht über Modem. Dieses wird in Kürze Geschichte sein.
Jede der Anlagen verfügt über einen Windows PC zur Anlagenvisualisierung. Die eigentliche Regelung machen die dezentralen SIEMENS Baugruppen. Sämtliche Störmeldungen werden auf dem PC in einem Texteditor niedergeschrieben. Mein Gedanke ist nun der, dass sobald eine Information in diesen Texteditor geschrieben wird ein beliebiges Emailprogramm ( Outlook ) diese Information als Email versendet. Den Informationen sind führend Sterne entsprechend der Wertigkeit vorangestellt (*; ; *). Genial wäre, wenn entsprechend der Wertigkeit bestimmte Gruppen realisiert werden können, welche informiert werden.

Frage: Geht das überhaupt? Kann jemand da ein entsprechendes Tool schreiben und welche Kosten entstehen?

Vielen Dank im Voraus.

Mit freundlichen Grüßen.

F. Morgenstern

Content-Key: 291825

Url: https://administrator.de/contentid/291825

Printed on: April 26, 2024 at 13:04 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Dec 28, 2015 at 22:13:41 (UTC)
Goto Top
Zitat von @Stern511:

Frage: Geht das überhaupt?

Ja.

Kann jemand da ein entsprechendes Tool schreiben ...

Ja.

... und welche Kosten entstehen?

kommt drauf an, wie die Gegebenheiten sind udn welcher "Comfort" benötigt wird. Pauschal würde ich da mindestens mit einer mannstunde rechnen, was mit ca. 80-100€ zu Buche schlagen würde. Wenn Du Glück hast, shüttelt Uwe/Colinardo Dir das Skript kostenlos aus dem Ärmel. face-smile

Eine einfache Möglichkeit wäre ein kleines skript zu schreiben, das periodisch überprüt, ob sich die Datei geändert hat und bei treffer eine Mail schickt. ür leute mir Erfahrung ist das in 5 Minuten gemacht, aber das hauptproblem dürfet eher sein, was bei Dir vorzufinden ist.

lks
Member: TlBERlUS
TlBERlUS Dec 29, 2015 at 07:01:10 (UTC)
Goto Top
Guten Morgen,

mit Powershell wäre das, wie LKS schon gesagt hat, in ca. 5 Minuten erledigt.
Die Frage wäre dann eher, soll nur versendet werden, dass sich die Datei geändert hat, oder auch bspw. was hinzugekommen ist?


Grüße,

Tiberius
Member: maretz
maretz Dec 29, 2015 at 08:18:06 (UTC)
Goto Top
Moin,

klar kann man sowas einfach machen... Java-Programm dafür is vermutlich weniger als 1h, wenns Konfigurierbar sein soll (z.B. mehrere Empfänger der Mail usw.) etwas mehr.

Allerdings: Ich würde mir aus Bequemlichkeit was anderes überlegen - die Datei nicht per Email versenden sondern irgendwo zentral ablegen (je nachdem wieviele du überwachen willst/sollst). Da dann ein Icinga rauf und schon habe ich ein komplettes Monitoring. Dauert auch nicht soviel länger, erlaubt aber dafür zu prüfen wie alle Systeme aussehen (auf einem Blick) und erlaubt auch eine History über die "Services". So siehst du z.B. leichter ob meinetwegen immer am Donnerstag um 3:00 morgens im Gebäude X das System Y eine (ggf. unkritische) Störung meldet...

Ist halt ne Frage wieviel Aufwand du dafür betreiben willst...

Schönen Gruß,

Mike
Member: colinardo
colinardo Dec 29, 2015 updated at 12:02:43 (UTC)
Goto Top
Hallo zusammen,
Zitat von @Lochkartenstanzer:
Wenn Du Glück hast, shüttelt Uwe/Colinardo Dir das Skript kostenlos aus dem Ärmel. face-smile
Wer weckt mich da aus dem Winterschlaf face-smile uaahhhhh gäähhhnn...

Hier mal ein Powershelll-Beispielscript anhand deiner wenigen Infos.

Das Skript überwacht eine Datei kontinuierlich auf hinzugekommene Änderungen einer beliebigen Textdatei. Dabei wird jede nicht leere Zeile am Anfang jeder Zeile ausgewertet ob sie mindestens mit einem Sternchen anfängt (*). Ist das der Fall wird die Mail-Adresse aus der Hashtable in Zeile 7 ermittelt. Hatte die Zeile keine Sternchen zu Beginn oder eine nicht in der Hashtable definierte Anzahl an Sternchen wird sie der UNKNOWN Kategorie zugeordnet und an die entsprechende Backup-Mailadresse verschickt welche ebenfalls in der Hashtable vermerkt ist.

Für den Fall das mehrere Alerts bei einem einzigen Update der Textdatei vorkommen die ein und die selbe Wertigkeit (z.B zwei Sterne besitzen) werden diese zu einer einzigen Mail zusammengefasst und verschickt.

Den SMTP-Server/Absenderadresse/Subject/Username/Passwort/SSL = JA/NEIN etc. sind in der Send-MailMessage-Zeile (Zeile 37) anzupassen.
# Datei die auf Änderung überwacht werden soll
$statefile = 'C:\alerts\alertlog.txt'  
# Datei speichert die Anzahl der Zeilen der Textdatei zwischen.
$posfile = 'C:\alerts\pos.txt'  

# Mail-Gruppen nach Wertigkeit erstellen
$notify_groups = @{
    '*' = 'low@domain.de'  
    '**' = 'mid@domain.de'  
    '***' = 'high@domain.de'  
    'UNKNOWN' = 'unknown@domain.de'  
}

if (!(Test-Path $posfile)){Set-Content $posfile -Value "0" -Force}  
if (Get-EventSubscriber -SourceIdentifier StateChange -EA SilentlyContinue) {Unregister-Event StateChange}

$fsw = New-Object IO.FileSystemWatcher ([System.IO.Path]::GetDirectoryName($statefile)), ([System.IO.Path]::GetFileName($statefile)) -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'LastWrite'}   
Register-ObjectEvent $fsw Changed -SourceIdentifier StateChange -Action { 
    $currentContent = [array](gc $statefile)
    $pos = [double](gc $posfile)
    if ($currentContent.length -gt $pos){
        $currentContent[$pos..($currentContent.Length -1)] | ?{$_ -ne ""} | group {[regex]::match($_,'^(\*+)').Groups[1].Value} | %{  
            write-host "`n--> ALERT:`n $($_.Group)" -F Yellow  
            if ($_.Name -match '^(\*+)'){  
                $mail = $notify_groups[$Matches[1]]
                if ($mail){
                    write-host "Benachrichtige Gruppe: $mail"  
                }else{
                    $mail = $notify_groups.UNKNOWN
                }
            }else{
                $mail = $notify_groups.UNKNOWN
            }
            if ($mail -eq $notify_groups.UNKNOWN){
                write-host "Fehlerkategorie wurde nicht erkannt. Meldung geht an: '$mail'" -F Red  
            }
                Send-MailMessage -From 'sender@domain.de' -To $mail -Subject 'ALERT' -Body ($_.Group -join "`r`n") -SmtpServer 'smtp.server.de' -Credential (new-Object PSCredential('username',(ConvertTo-SecureString 'Passw0rd' -AsPlainText -Force))) -UseSsl  
        }
        Set-Content $posfile -Value $currentContent.Length
    }
} | out-null

cls
write-host "Waiting for Alerts..." -F Green  
while($true){
    sleep(1)
}
Wer's gebrauchen kann, viel Spaß damit. Das Skript ist kostenlos verwendbar, nachträgliche individuelle Anpassungen jedoch kostenpflichtig.
Bei Interesse für Anpassungen einfach kurze PM.

Ich zieh mich derweil wieder in meine Höhle zurück face-wink

Frohes Neues schon mal
Grüße Uwe

Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Member: laster
laster Dec 29, 2015 at 15:40:03 (UTC)
Goto Top
Hallo F.Morgenstern,

Sämtliche Störmeldungen werden auf dem PC in einem Texteditor niedergeschrieben
Wer schreibt denn da? Menschen, oder schreiben Programme in eine Textdatei?
Pro PC eine Textdatei?
Mit PRTG (kostenlose Version gibt es) kannst Du die Textdateien überwachen und noch viel mehr...
Ist auch nicht kompliziert und gerade im Bereich Gebäudeleittechnik/Automatisierung eine zukunftssichere Lösung.

vG
LS