OPNsense Forum
International Forums => German - Deutsch => Topic started 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
-
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).
-
Bei den DHCP Leases könnte Dir dieser Thread (https://forum.opnsense.org/index.php?topic=7157.msg32288#msg32288) vielleicht weiter helfen.
-
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.
#!/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
-
Für einen Noob gar nicht mal schlecht ;)
Und danke für den Beitrag im Monit How-To :)
-
Danke ;-) Was man in 5!!! Stunden und dank Tante Google alles hinbekommt ;-)
-
Falls es jemand gebrauchen kann. Hatte mal ein dhcpd.leases2json in awk gebaut.
#!/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