aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <t0m.vd.l33@gmail.com>2015-04-14 12:49:09 +0200
committerGravatar Tom van der Lee <t0m.vd.l33@gmail.com>2015-04-14 12:49:09 +0200
commit7ca9c2dfcc63fdec9e2ce3a274da4b53b2dc3e6b (patch)
tree21bb7d7d3258b5d0d8814607dc79bffc80e847ac
parent2f4b878b71a8a1ad1d741cf7fb2089c44b403c2c (diff)
downloadttrace-7ca9c2dfcc63fdec9e2ce3a274da4b53b2dc3e6b.tar.gz
ttrace-7ca9c2dfcc63fdec9e2ce3a274da4b53b2dc3e6b.tar.bz2
ttrace-7ca9c2dfcc63fdec9e2ce3a274da4b53b2dc3e6b.zip
Added ttrace code
-rwxr-xr-xttrace81
1 files changed, 81 insertions, 0 deletions
diff --git a/ttrace b/ttrace
new file mode 100755
index 0000000..30b78e3
--- /dev/null
+++ b/ttrace
@@ -0,0 +1,81 @@
1#!/usr/bin/env bash
2
3host=$1
4
5get_host_info() {
6 reply_msg=$1
7 host_info=$(
8 echo "$reply_msg" |
9 grep -o -e "^PING .*$" |
10 cut -d ' ' -f 2,3
11 )
12 echo $host_info
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)/'
23 )
24 if [ -n "$hop_info" ]; then
25 echo "$hop_info"
26 else
27 echo "? (?)"
28 fi
29}
30
31get_ip() {
32 info=$1
33 echo "$info" |
34 sed 's/^.*\ (\(.*\))$/\1/'
35}
36
37get_hostname() {
38 info=$1
39 echo "$info" |
40 sed 's/^\(.*\)\ (.*)$/\1/'
41}
42
43get_avg_ping() {
44 reply_msg=$1
45 avg_ping=$(
46 echo "$reply_msg" |
47 grep 'rtt' |
48 cut -d '/' -f 5
49 )
50 if [ -z "$avg_ping" ]; then
51 avg_ping="???"
52 fi
53 echo "$avg_ping"
54}
55
56for (( hop = 0; hop < 64; hop++ )); do
57 reply=`ping -c 1 -t $hop $host`
58
59 if [ $? -eq 1 ]; then
60 hop_info=$(get_hop_info "$reply")
61 hop_ip=$(get_ip "$hop_info")
62
63 if [ "$hop_ip" = "?" ]; then
64 avg_ping="?"
65 else
66 hop_reply=`ping -c 1 -q $hop_ip`
67 avg_ping=$(get_avg_ping "$hop_reply")
68 fi
69
70 echo "$hop - $hop_info - $avg_ping ms"
71 else
72 host_info=$(get_host_info "$reply")
73 host_ip=$(get_ip "$host_info")
74 host_reply=`ping -c 1 $host_ip`
75 avg_ping=$(get_avg_ping "$host_reply")
76 echo "$hop - $host_info - $avg_ping ms"
77 break
78 fi
79done
80
81# vim: set ts=8 sw=8 tw=0 noet :