Raspberry als ping Server

  • Hallo zusammen!

    Habe in meinem Server Rack einen Raspi zum Steuern der Belüftung usw.
    Nachdem der die ganze Zeit läuft möchte ich ihn auch noch als "Ping server" verwenden.

    Er soll also eine Liste von IP Ardessen anpingen und sollte eine Adresse nicht antworten, ein Mail versenden.
    Also als Warnung - wenn sich ein z.b. Router oder Rechner aufhängt.

    Das mit der Mail funktion hab ich schon zusammen.
    Also das er ein Mail versendet sobald ein Ereigniss eintritt.

    Das automatische Pingen und auslesen der Rückgabe fehlt mir noch.

    Besten dank schonmal!


  • ... - wenn sich ein z.b. Router oder Rechner aufhängt.

    Das automatische Pingen und auslesen der Rückgabe fehlt mir noch.

    Wenn sich alle Geräte/IPv4-Adressen in deinem (W)LAN befinden, dann könntest Du auch arp-scan und den Rückgabewert (0 oder 1) von diff nutzen/auswerten. Z. B.:

    Code
    rm -f hostscanned.txt && sudo arp-scan -q --arpsha=<MAC-Adresse-IF-PI> --file=./hostlist.txt | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' >> hostscanned.txt && diff -q hostlist.txt hostscanned.txt; echo $?
    0


    (oder gleichwertig bzw. optimiert).

    EDIT:

    BTW: Du kannst per email, dir auch die "hostscanned.txt"-Datei vom PI aus, senden lassen.

    EDIT 2:

    Statt IP-Adressen kannst Du auch die MAC-Adressen der Geräte verwenden, mit z. B.:

    Code
    egrep -o '([[:xdigit:]]{2}[:-]){5}[[:xdigit:]]{2}'


    statt mit:

    Code
    grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'

    Für unterschiedliche Geräte/IPv4-Adressen im Internet wäre paping (tcp) m. E. besser als ping (icmp). Z. B.:


    und den Rückgabewert (0 oder 1) von paping nutzen.
    (oder gleichwertig, z. B. mit nc statt mit paping)

    Code
    :~$ nc -v -n -z -w 1 193.99.144.80 80; echo $?
    Connection to 193.99.144.80 80 port [tcp/*] succeeded!
    0

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (16. Oktober 2015 um 16:59)

  • rpi444

    SUPER DANKE!
    Mit so einer auführlichen Antwort hab ich nicht gerechnet!
    Besten dank für deine Bemühungen!
    Werde gleich anfangen das zu testen.

    Leider kann ich den Like Button nur 1x drücken ;)

    EDIT:

    Grad fertig in mein Script gebastelt - funktioniert prima!
    Danke nochmal!

    Einmal editiert, zuletzt von Markus4210 (16. Oktober 2015 um 21:14)

  • Muss doch nochmal lästig sein.

    Hab jetzt alle IP´s eingetragen.
    Lasse das Script via Crontab alle 5 min laufen.
    Leider bekomme ich aber manchmal die Nachricht, dass sich eine Adresse nicht meldet obwohl sie definitiv up ist.

    Das eine ist eine Management Karte von einer USV die hat nur eine 10mbit Anbindung.
    Die zweite Adresse ist ein Access Point der hinter 2 Switches und Medien Konvertern hängt.

    Daher gehe ich von timeout aus.

    Hier mal das Script - nicht lachen - bin eigentlich Elektriker :)


    Besten Dank schonmal!!

    Einmal editiert, zuletzt von Markus4210 (17. Oktober 2015 um 18:01)


  • Leider bekomme ich aber manchmal die Nachricht, dass sich eine Adresse nicht meldet obwohl sie definitiv up ist.

    Daher gehe ich von timeout aus.

    OK, dann solltest Du evtl.:

    Code
    -t 2000
    -r 5
    -i 500


    mit arp-scan, verwenden.

    Zitat


    --timeout=<i> or -t <i>
    Set initial per host timeout to <i> ms, default=100. This timeout is for the first packet sent to each host. subsequent
    timeouts are multiplied by the backoff factor which is set with --backoff.

    Zitat


    --retry=<i> or -r <i>
    Set total number of attempts per host to <i>, default=2.

    Zitat


    --interval=<x> or -i <x>
    Set minimum packet interval to <x>. This controls the outgoing bandwidth usage by limiting the rate at which packets can
    be sent. The packet interval will be no smaller than this number. If you want to use up to a given bandwidth, then it is
    easier to use the --bandwidth option instead. The interval specified is in milliseconds by default, or in microseconds if
    "u" is appended to the value.

    Für die hosts im (W)LAN die permanent up sind, solltest Du im PI, für sofort nach dem booten, statische arp-cache-Einträge konfigurieren.

    Evtl. auch mit Hilfe des systemweiten crontabs, den PI z. B. alle 3 Minuten einen "gratuitous arping" ins (W)LAN senden lassen.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Hallo!

    Hab das mal versucht:

    Zitat

    OK, dann solltest Du evtl.:

    Code
    -t 2000
    -r 5
    -i 500


    mit arp-scan, verwenden.

    Bis jetzt siehts ganz gut aus!

    Zitat

    Für die hosts im (W)LAN die permanent up sind, solltest Du im PI, für sofort nach dem booten, statische arp-cache-Einträge konfigurieren.

    Evtl. auch mit Hilfe des systemweiten crontabs, den PI z. B. alle 3 Minuten einen "gratuitous arping" ins (W)LAN senden lassen.

    Na ja wie gesagt - bin eigentlich Elektriker :s

    Möchte das ganze daher so einfach wie möglich halten.
    Darum das mit den beiden "Listen".
    Damit ich das ganze in nem Jahr auch noch nachvollziehen kann.

    Werde das ganze jetzt mal 1,2 Tage laufen lassen und dann das Ergebnis nochmal Posten.

    Besten Dank nochmal!


  • ... wie gesagt - bin eigentlich Elektriker

    OK, beste Voraussetzung. ;) Dann versuch mal auf deinem PI:

    Code
    sudo apt-get install iputils-arping tcpdump


    In der systemweiten crontab:

    Code
    sudo nano /etc/crontab


    und dort:

    Code
    */4 *    * * * root /usr/bin/arping -q -c 3 -w 10 -b -f -I <Interface-PI> -s 192.168.1.15 <IP-Adresse-USV> > /dev/null 2>&1
    */5*    * * * root /usr/bin/arping -q -c 3 -w 10 -b -f -I <Interface-PI> -s 192.168.1.15 <IP-Adresse-Access-Point> > /dev/null 2>&1
    */3 * * * * root /usr/bin/arping -q -c 1 -b -A -I <Interface-PI> 192.168.1.15 > /dev/null 2>&1
    #- - - - - - - - - -


    Interface und IP-Adressen richtig eintragen und danach speichern und nano verlassen.
    Auf dem PI:

    Code
    sudo tcpdump -vvveni any arp


    starten und über den Zeitraum von ca. 15 Minuten beobachten, ob die 3 arpings, aus der crontab richtig funktionieren.

    Betr. statischer arp-cache-Einträge auf dem PI, poste nach den ca. 15 Minuten von deinem PI, die Ausgabe von:

    Code
    ip neigh show

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!