Mehrere Server im eigenen Netzwerk auf einmal anpingen

  • VB.NET
  • .NET 5–6

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von behmann.

    Mehrere Server im eigenen Netzwerk auf einmal anpingen

    Hallo Forum-Freunde, ich habe mehrere Server (10 Stück zurzeit) im Netzwerk mit nur einer html Website drauf, ich müsste diese zu bestimmten Zeiten anpingen oder prüfen ob die Seiten Online sind. Wichtig wäre es aber alle auf einmal Prüfen, also nicht hintereinander sondern gleichzeitig. Vielleicht kann mit jemand einen Tipp geben nach was ich suchen muss.

    Grüße Buzii

    Buzii schrieb:

    anpingen oder prüfen ob die Seiten Online sind.
    das sind zwei verschiedene Dinge.
    Das eine ist ein Netzwerk-Ping, das andere ist ein HTTP-Request.
    Was nun?

    Buzii schrieb:

    nicht hintereinander sondern gleichzeitig
    Definiere gleichzeitig.
    Selbst, wenn das Programm die Requests gleichzeitig weg schickt, werden diese spätestens in der Netzwerkkarte seriell versendet.
    Welche Toleranz akzeptierst du?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Nicht ganz. Ein Ping prüft, ob die Ziel Adresse verfügbar ist und auch antwortet. Die Internet Adresse wird durch den DNS von Namen in eine IP aufgeschlüsselt. Wenn man z.B. über CMD - Fenster als Beispiel -> ping vb.paradise.de eingibt, kommt folgendes als Antwort ->

    Ping wird ausgeführt für vb-paradise.de [138.201.196.226] mit 32 Bytes Daten:
    Antwort von 138.201.196.226: Bytes=32 Zeit=29ms TTL=128
    Antwort von 138.201.196.226: Bytes=32 Zeit=28ms TTL=128
    Antwort von 138.201.196.226: Bytes=32 Zeit=35ms TTL=128
    Antwort von 138.201.196.226: Bytes=32 Zeit=36ms TTL=128

    Ping-Statistik für 138.201.196.226:
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
    (0% Verlust),
    Ca. Zeitangaben in Millisek.:
    Minimum = 28ms, Maximum = 36ms, Mittelwert = 32ms

    Der Ping prüft, das der angepingte Server reagiert und auch antwortet. Mitunter kann es da zu Paket Verlusten kommen. Dadurch lässt sich aber prüfen, ob einmal der Server Online ist und zweitens, wie lange die Antwortzeit ist.

    Ich nutze durch meine Arbeit im Bereich DSL Technik oft den Befehl, um zu prüfen, ob der Endkunde eine Internet Verbindung hat, ob der DNS korrekt arbeitet und ob irgendwelche Programme die Verbindung verlangsamen. Oft kommt es vor, das kein Seitenaufbau im Browser ist. Und das ist die einfachste Methode, dies zu prüfen. Somit kann man den prüfen, ob ein Verbindungsproblem zum Internet, zum Router oder gar ein Netzwerk Karten Fehler vorliegt.
    Oder halt Browser Probleme vorliegen, oder doch nur der Fehler 40 ist.

    PS: eine mehrfachen Ping auf, in deinem Fall, 10 Servern gleichzeitig, kann dazu führen, das einige Sicherheits-Programme das als D-Dos Attacke sehen. Daher wäre bei Ping nacheinander sinnvoller.
    Grüße Snipy26



    Auf jeder Aktion erfolgt immer eine Re-Aktion, und selbst wenn es nur ne Fehlermeldung ist. :thumbsup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Snipy26“ ()

    Hi

    Anstatt einen Ping, könntest Du eine Verbindung zu einem bestimmen Port auf dem Server aufbauen. zB Port 445 oder auf den Port, der den Webserver zur Verfügung stellt. Der Port muss im Normalfall auch erreichbar sein. Für den Fall das nicht, wird ein TimeOut von ein paar Millisekunden festgelegt.

    Edit: Ich nutze diese Portprobe in meinem Firmennetzwerk um zu ermitteln ob ein Client online ist. Das geht, durch den TimeOut bei nicht Erreichbarkeit, ratzfatz. Ein Ping würde bei unseren Clients zb nichts bringen da die Clients auch auf dem Ping antworten, obwohl diese heruntergefahren sind. Die Portprobe funktioniert dagegen recht zuverlässig.
    Mfg -Franky-

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „-Franky-“ ()

    Hi

    Mein Programm ist in VB6 geschrieben und ich nutze hier CreateObject("MSWinsock.Winsock.1") für die Portprobe. In .NET müsste es die TcpClient Klasse sein -> docs.microsoft.com/en-us/dotne…ts.tcpclient?view=net-6.0 Zwischen new TcpClient(server, port) und client.Close() kommt halt eine Do/While oder was anderes das die Schleife dann abbricht (TimeOut) und zwar wenn der Connect erfolgreich war (TcpClient.Connected) bzw dann nach ein paar Millisekunden wenn der Connect nicht zustande kommt. Ich prüfe danach nochmal den TcpClient.Connected.
    Mfg -Franky-
    Bist du mittlerweile auf eine Lösung gekommen?

    Ich hätte da eventuell was für dich... ist zwar nicht genau Zielgruppe dieses Forums und hier ein bisschen vielleicht am Thema vorbei, aber könnte in dieser Thematik dennoch interessant sein.
    Ein Bash-Script (Ubuntu), welches minütlich bis zu 25 hinterlegte IP-Adressen in einer config.txt anpingt und bei einem Fehlschlag einmalig bis zur Wiederaufnahme eine Benachrichtigung wahlweise per Telegram oder E-Mail schickt.
    Ich überwache so mehrere hausinterne Server, systemrelevante Netzwerkgeräte und VPNs.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „behmann“ ()