OPNsense Forum

International Forums => German - Deutsch => Topic started by: docb on June 02, 2018, 11:22:27 am

Title: Automatische Benachrichtigungen durch Opensense
Post by: docb on June 02, 2018, 11:22:27 am
Hallo Gemeinde,
ich nutze OpenSense jetzt schon ein paar Monate und bin mehr als zufrieden. Eines geht mir allerdings noch ab - kann man OpenSense dazu bringen, sich aktiv bei bestimmten Systemevents zu melden - also entweder eine Email zu schicken oder zB. über Pushover. Ich hätte z.B. gerne eine Benachrichtigung, wenn sich ein neues Gerät im Netzwerk anmeldet (ein neuer DHCP Lease erstellt wird). Gibt es da eine Möglichkeit, die ich bislang noch nicht gefunden habe? Also über System -> Einstellungen -> Benachrichtigungen kann man ja zumindest SMTP einrichten, aber wie kann ich denn steuern, dass ich bei bestimmten Events aktiv benachrichtigt werde?
Viele Grüße
doc
Title: Re: Automatische Benachrichtigungen durch Opensense
Post by: fabian on June 02, 2018, 06:51:57 pm
Ich hätte z.B. gerne eine Benachrichtigung, wenn sich ein neues Gerät im Netzwerk anmeldet (ein neuer DHCP Lease erstellt wird). Gibt es da eine Möglichkeit, die ich bislang noch nicht gefunden habe?
Meines wissens nach nein - monit ist derzeit das beste Überwachungswerkzeug auf OPNsense zur Überwachung von Diensten.

Also über System -> Einstellungen -> Benachrichtigungen kann man ja zumindest SMTP einrichten, aber wie kann ich denn steuern, dass ich bei bestimmten Events aktiv benachrichtigt werde?
Das könnte in Zukunft entfernt werden, da es kaum verwendet wird und oft Probleme macht (insbesondere im Bezug auf TLS).
Title: Re: Automatische Benachrichtigungen durch Opensense
Post by: faunsen on June 06, 2018, 04:35:47 pm
Bei den DHCP Leases könnte Dir dieser Thread (https://forum.opnsense.org/index.php?topic=7157.msg32288#msg32288) vielleicht weiter helfen.
Title: Re: Automatische Benachrichtigungen durch Opensense
Post by: docb on June 09, 2018, 10:44:09 am
Ja super, das hat mir weitergeholfen - falls es mal jemand braucht, mein Code scheint zu funktionieren ;-)
Und ja - das geht bestimmt eleganter, aber ich bin absoluter Linux/FreeBSD Noob.
Ich bin vorgegangen wie in dem Link beschrieben und habe nur das Skript angepasst.

Code: [Select]
#!/bin/csh
set FILE = "/var/dhcpd/var/db/dhcpd.leases"
set LeaseCount = `grep -c "binding state active" $FILE`
echo "Active LeaseCount: $LeaseCount"
if ($LeaseCount > 0) then
 set LINE = ( `grep -n "binding state active" $FILE | cut -d: -f1` )
 foreach L ($LINE)
  echo "##################"
 # set EL = `expr $L + 8`
  set CL = `expr $L - 5`
  while ( $CL < `expr $L + 8` )
   if ( `sed -n "$CL p" $FILE | cut -d ' ' -f1` == "lease" ) then
    echo IP: `sed -n "$CL p" $FILE | cut -d ' ' -f2`
   endif
   if ( `sed -n "$CL p" $FILE | cut -d ' ' -f3` == "starts" ) then
    echo Start: `sed -n "$CL p" $FILE | cut -d ' ' -f5,6`
   endif
   if ( `sed -n "$CL p" $FILE | cut -d ' ' -f3` == "ends" ) then
    echo Ende: `sed -n "$CL p" $FILE | cut -d ' ' -f5,6`
   endif
   if ( `sed -n "$CL p" $FILE | cut -d ' ' -f3` == "hardware" ) then
    echo MAC: `sed -n "$CL p" $FILE | cut -d ' ' -f5`
   endif
   if ( `sed -n "$CL p" $FILE | cut -d ' ' -f3` == "client-hostname" ) then
    echo Name: `sed -n "$CL p" $FILE | cut -d ' ' -f4-`
   endif
   if ( `sed -n "$CL p" $FILE | cut -d ' ' -f3` == "set" ) then
    echo Device: `sed -n "$CL p" $FILE | cut -d ' ' -f6-`
   endif
   if ( `sed -n "$CL p" $FILE | cut -d ' ' -f1` == "}" && $CL > $L ) then
    set CL = `expr $CL + 8`
   endif
   @ CL++
  end
 end
 exit 1
else
 exit 0
endif



Viele Grüße
doc
Title: Re: Automatische Benachrichtigungen durch Opensense
Post by: faunsen on June 11, 2018, 08:54:16 am
Für einen Noob gar nicht mal schlecht   ;)

Und danke für den Beitrag im Monit How-To  :)
Title: Re: Automatische Benachrichtigungen durch Opensense
Post by: docb on June 11, 2018, 06:11:03 pm
Danke ;-) Was man in 5!!! Stunden und dank Tante Google alles hinbekommt ;-)
Title: Re: Automatische Benachrichtigungen durch Opensense
Post by: NilsS on June 13, 2018, 08:29:34 am
Falls es jemand gebrauchen kann. Hatte mal ein dhcpd.leases2json in awk gebaut.

Code: [Select]
#!/bin/sh
awk 'BEGIN{RS = "}";FS = "\n"; printf "[";} END {printf "]";}{
    for (I=NF;I>0;I--) {
        split($I, lineArray, " ");
        if( lineArray[1] == "lease" ){
            ipaddr=lineArray[2];
            if(hascontent == 1) {
                printf ",";
            }
            hascontent=1;
            printf "{\"ipaddr\":\""ipaddr"\", \"state\":\""bindingstate"\", \"mac\":\""mac"\", \"hostname\":\""hostname"\", \"start\":\""start"\", \"end\":\""end"\", \"cltt\":\""cltt"\"}";
        }
        if( lineArray[1] == "binding" && lineArray[2] == "state") {
            bindingstate=lineArray[3];
            gsub(/\;/,"",bindingstate);
        }
        if( lineArray[1] == "hardware" && lineArray[2] == "ethernet") {
            mac=lineArray[3];
            gsub(/\;/,"",mac);
        }
        if( lineArray[1] == "client-hostname") {
            hostname=lineArray[2];
            gsub(/\;|"/,"",hostname);
        }
        if( lineArray[1] == "starts") {
            start=lineArray[3]" "lineArray[4];
            gsub(/\;/,"",start);
        }
        if( lineArray[1] == "ends") {
            end=lineArray[3]" "lineArray[4];
            gsub(/\;/,"",end);
        }
        if( lineArray[1] == "cltt") {
            cltt=lineArray[3]" "lineArray[4];
            gsub(/\;/,"",cltt);
        }
    }
}' /var/dhcpd/var/db/dhcpd.leases