Zugriff auf Traceroute-Werte



  • Hallo C++ Community,

    ich sitze derweil an einem kleinem Projekt, bei dem ich ein Skript schreiben will, das eine tracert-Abfrage auf eine bestimmte Seite macht und mit die einzelnen Werte und die Anzahl der Stationen zurückgibt, so dass ich mit denen weiter arbeiten kann.

    Mit system("tracert www.google.de") kann ich den tracert super ausführen, aber gibt es eine Möglichkeit auf die einzelnen Werte und Anzahl der Stationen zuzugreifen?

    Viele Grüße,
    Malcho



  • Hi!

    Du könntest die Ausgabe in eine Datei umleiten und diese auslesen. Eigentlich sollte "tracert google.de > tracert.txt" schon ausreichen dafür.
    Du könntest es auch selbst implementieren, was allerdings nicht leicht ist (Stichwort: Raw Sockets). tracert hat den Nachteil das es nur IMAP benutzt. Alternativen wären noch UDP (wie beim traceroute von Unix-Systemen Standard) oder TCP (tcptraceroute, sowohl für Linux, als auch Windows verfügbar). Damit könnte man auf möglich auftretende Probleme (keine Antwort von einzelnen Systeme oder gar komplette Blockade der Anfragen) sogar noch reagieren und eine jeweils andere Methode ausprobieren.

    Greetz



  • Da hätte ich auch selbst drauf kommen können. 🙂

    Vielen Dank!



  • Vellas schrieb:

    tracert hat den Nachteil das es nur IMAP benutzt.

    was hat den tracert mit imap zu tun?

    meines wissens benutzt es normale icmp-pings

    imap ist ein email-protokoll



  • Ich meinte auch ICMP. Das IMAP ein Mail-Protokoll ist, weiß ich auch. Kann ja mal passieren, vor allem zu später Stunde, dass man sich verschreibt...

    Greetz


  • Administrator

    @Vellas,
    Und was ist der Nachteil, wenn ICMP verwendet wird? Oder anders gefragt, wie willst du eigentlich ohne ICMP ein Traceroute erstellen? Du brauchst die Informationen, welche über ICMP zurückgesendet werden, egal ob man nun UDP oder TCP verwendet.

    Grüssli



  • Es ist nicht unbedingt ein Nachteil. Es funktioniert ja auch meistens. Es ging dabei lediglich um die anfragenden Pakete. Standardmäßig benutzt das traceroute von Linux UDP, nur mit dem Schalter -I benutzt es ICMP für die anfragenden Pakete. Es ging bei der Erwähnung der anderen Protokollen nur darum, dass manche Anfragen von einer Firewall blockiert werden. Mit einem anderen Protokoll lässt sich sowas manchmal umgehen. Zurück kommen immer ICMP Pakete.
    Es ging mir dabei lediglich darum auf dieses Problem aufmerksam zu machen, um die Erfolgsquote vielleicht ein wenig zu erhöhen. Wenn das nicht so wichtig ist, reicht ja die Methode des Threaderstellers per system() und die Umleitung in eine Datei vollkommen.

    Greetz


  • Administrator

    @Vellas,
    Ah, ok, mein Fehler. Ich hatte dich so verstanden, dass du ICMP als ungeeignet für einen Traceroute siehst. Was natürlich ein wenig seltsam wäre 🙂

    Grüssli


Anmelden zum Antworten