Das einzige Vorkommen von "Sprüngen" in trace Ausgang (stderr, tatsächlich) ist nach oben hin in der stderr "header" Zeile:
traceroute to foo.bar.com (123.12.1.23), 30 hops max, 40 byte packets
oder Ähnliches - wenn das die eine Zeile ist, die Sie greifen möchten, könnten Sie nach "hops max,"
oder ähnlichem suchen, um das Risiko von unerwünschten Treffern zu reduzieren (sollte ein Zwischen-Host gerade "Hops" in seinem haben) DNS).
Ist das was du meinst? Ist Ihr Problem das Ergreifen dieser 30, die maximale Anzahl von Hops, in eine Bash-Variable? Wenn das so ist, dann
maxhops=`traceroute www.yahoo.com 2>&1 >/dev/null | grep "hops max" | cut -d' ' -f5`
sollte helfen - Sie $maxhops
danach verwenden können (und es wird 30 in dem obigen Beispiel sein).
Aber ich vermute, du meinst etwas völlig anderes - klar, vielleicht ...?
Bearbeiten: das OP hat geklärt, sie wollen, nicht maxhops, aber die tatsächliche Anzahl der Hopfen wie von Traceroute gemessen; zu diesem Zweck
numhops=`traceroute www.yahoo.com 2>/dev/null | tail -1 | cut -d' ' -f2`
oder ein einfacheres
numhops=`traceroute www.yahoo.com | wc -l`
sollte gut funktionieren!
Wenn Sie etwas schicker (oder mehr als ein Ergebnis, usw.) wollen, dann awk wie in anderen Antworten vorgeschlagen, ist völlig in Ordnung, aber eine Pipeline-Mix von Grep, Tail und Cut, ist eine ziemlich traditionelle Unix-y-Ansatz , und immer noch recht gut für einfache Fälle (und einige komplexe, aber awk oder perl ist vielleicht besser geeignet für diese ;-).
ich mag die Idee, eine Variable von maxhops zu setzen. Ihr Recht, ich wollte die endgültige Ausgabe des Skripts auf dem Bildschirm angezeigt werden: "Der Host www.google.com ist --- hüpft weg". Der ---- wäre der Hop-Wert, der vom Befehl traceroute analysiert wird. Je nach der vom Benutzer eingegebenen Site kann dies unterschiedlich sein. also versuche ich nur die Anzahl der Hops zu erfassen, die von Traceroute und nur diesen Daten analysiert wurden. was denkst du? –
Beachten Sie, dass die Verwendung von wc -l nicht korrekt ist, da der Header nicht gezählt werden sollte.Das heißt, manchmal wird Traceroute zeigen * * * Willst du das als einen Sprung zählen? – ghostdog74
Der "Header" ist auf stderr, also wc wird es nicht zählen (es ist umgeleitet zu/dev/null, aber das ist nicht das Problem, es würde sowieso nicht gezählt werden, es sei denn, Trichter & 1). Probieren Sie es aus, @ ghostdog74: der Schwanz -1 und Schnitt, und der WC-l, geben genau die gleiche Anzahl! –