Pushover Nachricht bei bestimmten Syslog Ereignissen

  • Guten Abend Liebes pi-Forum,


    ich nutze einen pi mit raspbian-lite als kleinen "Remote-Syslog-Server" in einem Netzwerk. Nun möchte ich bei bestimmten Ereignissen eine PushOver-Nachricht generieren und benötige hier etwas Unterstützung von euch. Angelehnt an dieses pushover-ssh-skript habe ich versucht die o.g. Anforderung zu realiseren, scheitere aber an der korrekten Ausgabe. Der Rest des Skriptes funktioniert, es geht also nur um die gefilterte Ausgabe.


    syslog gibt z.B. das folgende Log aus:

    Code
    1. Aug 18 18:11:05 192.168.55.55  iLO4: 08/18/2017 18:11 The receipt of this message confirms that Syslog is configured correctly


     
    Für den Inhalt der Pushover-Nachricht würde ich gern den hinteren Teil ab "iLO4:" filtern , bekomme es aber leider nicht hin. Hier mein aktueller Versuch:



    Wäre toll, wenn ihr da mal einen Blick drauf werfen könntet, danke sehr.


    Grüße M.

    Edited once, last by Micky ().

  • Hallo Micky,
    was meinst du genau mit "filtern"?
    Welcher Teil der Ausgabe interessiert dich - bzw. welchen Teil der Ausgabe möchtest du der API übergeben?
    Für den Fall dass es der ganze Teil hinter "iLO4" sein soll, kannst du es mal hiermit versuchen:


    Bei Fragen zum Code bitte nachfragen, sodass du etwas dabei lernst :thumbs1:


    Liebe Grüße

    Edited once, last by rastafari ().

  • Hallo Rastafari,


    erstmal danke für deine Unterstützung. Ich würde gern die Ausgabe hinter iLO als Nachrichtentext für die PushOver Nachricht nutzen, bei deinem Skript kommt noch "Hello World" ;-) und ich vermute mal, dass tailf --> tail -F sein müsste. Oder bewirken beide das Gleiche?


    Grüße M.


    EDIT: Hallo Tell, auch dir Danke für die Hilfe, probiere es gleich aus und melde mich dann wieder.

  • Hallo Micky, habe den Code entsprechend editiert damit es klarer wird :thumbs1:
    Und ja,

    Code
    1. tail -f


    bewirkt hier das gleiche wie

    Code
    1. tailf

    Edited once, last by rastafari ().

  • Hallo Tell,


    wenn ich die beiden Zeilen ersetze, erhalte ich den folgenden Fehler:

    Code
    1. gawk: Kommandozeile:2: /iLO/ {split($0,parts,"iLO4:");cmd=sprintf("curl -s \
    2. gawk: Kommandozeile:2: ^ Nicht beendete Zeichenkette
    3. gawk: Kommandozeile:2: /iLO/ {split($0,parts,"iLO4:");cmd=sprintf("curl -s \
    4. gawk: Kommandozeile:2:


    Automatisch zusammengefügt:[hr]
    Hallo Rastafari,


    aktuell erhalte ich noch die Fehlermeldung, dass message leer ist... Muss ich mir gleich nochmal in Ruhe angucken.

    Edited once, last by Micky ().

  • Das war mein Test. Ist halt ein bisschen anders:


  • sehr merkwürdig - habe das Skript eben schnell getestet und es läuft.
    Setze doch mal

    Code
    1. set -x


    oben im Skript ein und poste die Ausgabe


    <- Token und User dabei natürlich anonymisieren

    Edited once, last by rastafari ().

  • hallo rastafari,


    hab das Skript nochmal neu erstellt und dann funktionierte es auch mit dem gewünschten Inhalt im Nachrichtentext. Das wird nun via Crontab eingerichtet und schon erhalte ich die gewünschten Pushover-Nachrichten.


    Mir fällt grad noch ein, dass man das Skript ja auch um weitere Ereignisse erweitern könnte. Hast du Lust und Zeit das Skript um diese Möglichkeit zu erweitern?? Also wenn iLO4 gefunden wird, dann Message-Text wie oben, bei z.B. iLO3 dann Message-Text3, bei iLO2 Message-Text2 ....


    An dieser Stelle aber schon einmal ein dickes Danke. Was das Skript wo tut, verstehe ich, komme nur beim Filtern mit awk/gawk noch nicht voran... hier muss ich mich noch tiefer einarbeiten.


    Grüße M.
    Automatisch zusammengefügt:[hr]
    Hallo Tell,


    dein Skript habe ich auch nochmal versucht, leider ohne Erfolg. Hier der aktuelle Versuch:

    Edited once, last by Micky ().

  • Tell : Jepp, genau das wars. Danke schön für deine Geduld ;-)


    Der Vollständigkeit halber, hier nochmal die beiden funktionierenden Skripte für die Nachwelt:


    Edited once, last by Micky ().

  • awk kennt reguläre Ausdrücke - daher müsste dies hier funktionieren:


  • Hallo und Guten Abend Zusammen,


    das o.g. Skript arbeitet seit knapp 2 Jahren auf meinem pi und informiert mich, sobald iLO4 Nachrichten auf meinem syslog Server auftauchen. Nun würde ich gern den syslog Server auch für andere Dienste nutzen und versuche daher absenderbezogene Aktionen auszuführen bzw. auch einen Filter für unerwünschte Nachrichten zu realisieren. Mein Skriptversuch bringt leider nicht den erwünschten Erfolg, könnte mir einer der Skriptprofis mal drüber schauen ...?


    Wenn ich nur nach einem unerwünschten String filtern und nach einem weiteren Begriff suchen würde, würde es funktionieren. Nun suche ich nach einer Möglichkeit, womit ich Zeilen welche "clock", "micky" oder "read" beinhalten zu ignorieren und übriggebliebene Zeilen anschließend lesen und abhängig von verschiedenen Schlagwörtern unterschiedliche Aktionen ausführen kann.


    z.B. ilO4 -> PushOver Nachricht

    fhem --> eMail Nachricht

    solar --> info in Logfile schreiben


    Diese Aktionen (PushOver, eMail und Info in Logfile schreiben) bekomme ich hin ... Kann mir hier jemand unter die Arme greifen??


    Danke und Grüße M.

    Edited 2 times, last by Micky ().

  • Hallo tell,


    vielen Dank. Der Filter funktioniert super. Kann mir noch jemand unter die Arme greifen, wie ich verschiedene Aktionen je nach gefundenen Schlagwort definieren kann? Aktuell wird in Zeile 20 nach ILO gefiltert und bei einem Treffer die Push-Nachricht verschickt. Wie müsste ich weitere Aktionen bei anderen Schlagwörten definieren?


    Vielen Dank für eure Hilfe.



    Nachtrag: Ich glaube ich konnte die fehlende Anforderung lösen. Das Skript habe ich oben angepasst. Konstruktive Kritik ist immer gern gesehen ;-)


    Grüße M.

    Edited 7 times, last by Micky ().