aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xttrace55
1 files changed, 23 insertions, 32 deletions
diff --git a/ttrace b/ttrace
index 30b78e3..eec20ad 100755
--- a/ttrace
+++ b/ttrace
@@ -2,27 +2,18 @@
2 2
3host=$1 3host=$1
4 4
5get_host_info() { 5get_info() {
6 reply_msg=$1 6 reply=$1
7 host_info=$( 7 info=$(
8 echo "$reply_msg" | 8 echo "$reply" |
9 grep -o -e "^PING .*$" | 9 grep -i "from" |
10 cut -d ' ' -f 2,3 10 sed "s/^.*[Ff]rom\ \(.*\)/\1/" |
11 ) 11 cut -d ' ' -f 1,2 |
12 echo $host_info 12 cut -d ':' -f 1 |
13}
14
15get_hop_info() {
16 reply_msg=$1
17 hop_info=$(
18 echo "$reply_msg" |
19 grep -o -e "^From .*$" |
20 tail -n 1 |
21 cut -d ' ' -f 2,3 |
22 sed 's/^\([0-9]\{1,3\}\(\.[0-9]\{1,3\}\)\{3\}\).*$/\1\ (\1)/' 13 sed 's/^\([0-9]\{1,3\}\(\.[0-9]\{1,3\}\)\{3\}\).*$/\1\ (\1)/'
23 ) 14 )
24 if [ -n "$hop_info" ]; then 15 if [ -n "$info" ]; then
25 echo "$hop_info" 16 echo "$info"
26 else 17 else
27 echo "? (?)" 18 echo "? (?)"
28 fi 19 fi
@@ -41,9 +32,9 @@ get_hostname() {
41} 32}
42 33
43get_avg_ping() { 34get_avg_ping() {
44 reply_msg=$1 35 reply=$1
45 avg_ping=$( 36 avg_ping=$(
46 echo "$reply_msg" | 37 echo "$reply" |
47 grep 'rtt' | 38 grep 'rtt' |
48 cut -d '/' -f 5 39 cut -d '/' -f 5
49 ) 40 )
@@ -57,23 +48,23 @@ for (( hop = 0; hop < 64; hop++ )); do
57 reply=`ping -c 1 -t $hop $host` 48 reply=`ping -c 1 -t $hop $host`
58 49
59 if [ $? -eq 1 ]; then 50 if [ $? -eq 1 ]; then
60 hop_info=$(get_hop_info "$reply") 51 info=$(get_info "$reply")
61 hop_ip=$(get_ip "$hop_info") 52 ip=$(get_ip "$info")
62 53
63 if [ "$hop_ip" = "?" ]; then 54 if [ "$ip" = "?" ]; then
64 avg_ping="?" 55 avg_ping="?"
65 else 56 else
66 hop_reply=`ping -c 1 -q $hop_ip` 57 reply=`ping -c 1 -q $ip`
67 avg_ping=$(get_avg_ping "$hop_reply") 58 avg_ping=$(get_avg_ping "$reply")
68 fi 59 fi
69 60
70 echo "$hop - $hop_info - $avg_ping ms" 61 echo "$hop - $info - $avg_ping ms"
71 else 62 else
72 host_info=$(get_host_info "$reply") 63 info=$(get_info "$reply")
73 host_ip=$(get_ip "$host_info") 64 ip=$(get_ip "$info")
74 host_reply=`ping -c 1 $host_ip` 65 reply=`ping -c 1 $ip`
75 avg_ping=$(get_avg_ping "$host_reply") 66 avg_ping=$(get_avg_ping "$reply")
76 echo "$hop - $host_info - $avg_ping ms" 67 echo "$hop - $info - $avg_ping ms"
77 break 68 break
78 fi 69 fi
79done 70done