FHEM kann per email und pushbullet kommunizieren, es kann die Erreichbarkeit per presence prüfen, es kann mich zu Hause akustisch darauf hinweisen das etwas im argen ist! Deshalb kam mir der Gedanke damit meinen Webserver und email server zu überwachen. Nur leider finde ich keine Möglichkeit mit presence auf einen bestimmten Port zu prüfen. Damit kann 9000, so haben wir unsere neue Mitbewohnerin getauft ;), zwar darauf achten das der Server erreichbar ist, ist aber nicht im Stande zu erkennen ob ein gewisser Dienst läuft.
Habe ich forum etwas übersehen oder in der commandref überlesen? Hat vielleicht jemand ne Idee wie man das umsetzten könnte?
Grüße Christian
Webserver könntest zB mit HTTPMOD überwachen......
Regelmäßig eine Seite pollen, wenn die nicht erreichbar ist --> Meldung.
lg, Ici
Oder den Modus function oder shellscript verwenden.
Danke, gute Idee. Diese kam mir auch schonmal. Mit mailcheck könnte ich den email server überwachen. Aber ich denke es muss doch einen allgemeinere Lösung geben.
wenn Du schon soweit bist, dass Du einen Webserver betreibst, bekommst Du bestimmt auch ein "echtes" Monitoringtool wie Munin oder Nagios eingerichtet. Die prüfen noch ein paar Sachen mehr und können ebenfalls über Pushbullet, Pushover etc. informieren.
Viele grüße
Zephyr
Ziel ist es ja aber das fhem weiß, was online ist und was nicht.
Habe mir jetzt etwas in "COPY & Paste" programiert, kann leider kein Perl.
Bei mir scheint es bis jetzt zu funktionieren. Vielleicht hilft es jemand anderen auf die Sprünge, wenn er vor dem selben Problem steht.
Noch ein nötiges Packet installieren
apt-get install libnet-ping-external-perl
In die 99_myUtils.pm muss folgendes rein.
use Net::Ping::External qw(ping);
sub
ServiceMonitor($$)
{
my ($host, $port) = @_;
my $status;
# Create a new ping object
my $p = Net::Ping->new("syn");
$p->port_number($port);
$p->ping($host,10);
# perform the ping
if ( $p->ack ) {
$status = 1;
}
else{
$status = 0;
}
# close our ping handle
$p->close();
return $status;
}
Dann ein PRESENCE Device erstellen.
define Pre_KSL_Email PRESENCE function {ServiceMonitor("IP","PORT")}
Jetzt muss ich für meine eigene Lösung eine Frage stellen. Möchte jetzt meine Lösung auf einen Raspberry einsetzten, vorher normaler PC. Erhalte aber immer folgende Fehlermeldung und kann damit auch nach vielen Google Versuchen nix anfangen:
Zitaterror while processing check: unexpected function output (expected 0 or 1): Can't locate object method "new" via package "Net::Ping" at
Hängt das mit der Architektur zusammen?
Wie kann ich das beheben?
Vielen Dank für eure Hilfe
Hi,
Net::Ping scheint ein perl Modul zu sein. Eventuell mal mit
sudo cpan install Net::Ping
nachinstallieren.
Viele Grüße
Danke, hatte ich vorher schon probiert.
Habe es jetzt nochmal getan
Net::Ping is up to date (2.59).
Aber gleicher Fehler
Hi,
aber
sudo apt-get install libnet-ping-external-perl
hast Du auch auf dem RPi ausgeführt?
Habe ich vorher gar nicht gesehen gehabt, aber Du brauchst natürlich nur die Packages entweder über apt-get oder über cpan installieren. Vielleicht überschneidet sich da jetzt auch was.
Ich hatte das auch mal und musste cpanminus (heißt glaube ich so) zuerst installieren, um ein vermeintlich neueres cpan package wieder weg zu bekommen.
Viele Grüße
Zitat von: gent am 04 Mai 2017, 20:22:47
Hi,
aber
sudo apt-get install libnet-ping-external-perl
hast Du auch auf dem RPi ausgeführt?
Habe ich vorher gar nicht gesehen gehabt, aber Du brauchst natürlich nur die Packages entweder über apt-get oder über cpan installieren. Vielleicht überschneidet sich da jetzt auch was.
Ich hatte das auch mal und musste cpanminus (heißt glaube ich so) zuerst installieren, um ein vermeintlich neueres cpan package wieder weg zu bekommen.
Viele Grüße
Ja habe ich ausgefüht. Keine Änderung
Hi,
schade, ich habe gedacht, ich könnte hier helfen. Da ich die gleiche Umgebung habe, habe ich das auch bei mir mal so umgesetzt und erhalte denselben Fehler.
Sorry und viele Grüße
Danke gent,
das ist doch schonmal etwas. Wenn es bei mir auf einer x86 Architektur funktioniert, aber bei uns beiden nicht auf arm, könnte es ja vielleicht daran liegen. Wenn sich jetzt noch einer einklinkt, könnten wir das Problem vielleicht lösen.
Danke
Du machst in deiner Sub "use Net::Ping::External qw(ping);" greifst aber mit "my $p = Net::Ping->new("syn");" auf den Constructor von Net::Ping zu. ..External ist ein Subset und ich denke damit ist nicth alles bekannt.
Teste mal use Net::Ping mit einzubinden. Bin zu wenig Perl-Experte aber der Fehler sieht so aus.
Vielen Dank kadettilac89, hat funktioniert.