tracert/tracert.sh

68 lines
1.8 KiB
Bash
Raw Normal View History

2019-02-13 18:13:24 +01:00
#!/bin/bash
2019-02-14 19:51:22 +01:00
2019-02-13 18:13:24 +01:00
if [[ -z "$1" || "$@" == *'-h'* ]]
2019-08-21 14:25:05 +02:00
then echo -e "Usage:
2019-02-13 18:13:24 +01:00
$(basename -- $0) [IP]
$(basename -- $0) [DOMAIN]
2019-08-21 14:25:05 +02:00
Erstellt von Kim Drechsel"; exit
fi
if [[ "$1" =~ [1-9][0-9].. && ${#1} == 4 ]]
then
ip1=$(echo $1 | grep -oe "^[1-9][0-9]" )
ip2=$(echo $1 | grep -oP "[1-9]$|[1-9][0-9]$" )
if [[ "$ip2" == '' ]]; then ip2=0; fi
host=10.$ip1.$ip2.1
else
host=$1
2019-02-13 18:13:24 +01:00
fi
2019-08-21 14:25:05 +02:00
2019-02-13 18:13:24 +01:00
##################################################################################
##################################################################################
timeout=2 #seconds
##################################################################################
##################################################################################
i=1
2019-08-21 14:25:05 +02:00
while true
do
ping=$(ping -t $i -c 1 -W $timeout $host | grep -E "From|from")
2019-02-13 18:13:24 +01:00
if [[ $(echo $ping | cut -d ' ' -f 1) == "64" ]]
then
2019-08-21 14:25:05 +02:00
#Last hop in route
2019-02-13 18:13:24 +01:00
if [[ $(echo $ping | cut -d ' ' -f 4 | tr -d '():' ) =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]
2019-08-21 14:25:05 +02:00
then echo -e "$i\t$(echo $ping | cut -d ' ' -f 4 | tr -d '():' )\t$(if [[ "$1" =~ [1-9][0-9].. && ${#1} == 4 ]]; then echo $1; else echo $host; fi)"
2019-02-13 18:13:24 +01:00
else echo -e "$i\t$(echo $ping | cut -d ' ' -f 5 | tr -d '():' )\t$(echo $ping | cut -d ' ' -f 4)"
fi
2019-08-21 14:25:05 +02:00
2019-02-13 18:13:24 +01:00
exit 0
2019-08-21 14:25:05 +02:00
else
2019-02-13 18:13:24 +01:00
if [[ $(echo $ping | cut -d ' ' -f 3 | tr -d '():') =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]
2019-08-21 14:25:05 +02:00
then echo -e "$i\t$(echo $ping | cut -d ' ' -f 3 | tr -d '():')\t$(echo $ping | cut -d ' ' -f 2)"
2019-02-13 18:13:24 +01:00
else echo -ne "$i\t$(echo $ping | cut -d ' ' -f 2)\t"
if [[ $(echo $ping | cut -d ' ' -f 2) =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]
2019-08-21 14:25:05 +02:00
then echo -e "$(host $(echo $ping | cut -d ' ' -f 2) | cut -d ' ' -f 5 | sed 's/\.$//g' | sed 's/3(NXDOMAIN)//g')"
2019-02-13 18:13:24 +01:00
else echo -e "*"
fi
fi
fi
2019-08-21 14:25:05 +02:00
2019-02-13 18:13:24 +01:00
((i++))
done