diff options
| author | 2015-04-14 14:04:34 +0200 | |
|---|---|---|
| committer | 2015-04-14 14:04:34 +0200 | |
| commit | 370fcef23c7238a508b1321084a623cd39851476 (patch) | |
| tree | 8b2c895a069d0a52be1e5476bfa50a1985bcc031 | |
| parent | 7ca9c2dfcc63fdec9e2ce3a274da4b53b2dc3e6b (diff) | |
| download | ttrace-370fcef23c7238a508b1321084a623cd39851476.tar.gz ttrace-370fcef23c7238a508b1321084a623cd39851476.tar.bz2 ttrace-370fcef23c7238a508b1321084a623cd39851476.zip | |
Shortened code by 10 lines
| -rwxr-xr-x | ttrace | 55 |
1 files changed, 23 insertions, 32 deletions
| @@ -2,27 +2,18 @@ | |||
| 2 | 2 | ||
| 3 | host=$1 | 3 | host=$1 |
| 4 | 4 | ||
| 5 | get_host_info() { | 5 | get_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 | |||
| 15 | get_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 | ||
| 43 | get_avg_ping() { | 34 | get_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 |
| 79 | done | 70 | done |
