-
Notifications
You must be signed in to change notification settings - Fork 0
/
traceroute.sh
executable file
·114 lines (84 loc) · 3 KB
/
traceroute.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/bin/bash
######Vérification qu'une adresse soit entrée######
if [ -z $@ ]
then
echo "Veuillez entrer une adresse IP ou le nom d'un site"
exit -1
else
echo "Début du test pour $@"
fi
######Déclaration des variables######
######Création d'un dossier où stocker les information######
#On transforme le nom du site ou de l'adresse IP en remplaçant les "." par des "-" pour une meilleure lisibilité des fichiers
ipformate="$(echo $1 |sed 's/\./\-/g')"
echo "Création du répertoire $ipformate"
rm -r -f $ipformate
mkdir $ipformate
sudo chmod 774 $ipformate
cd $ipformate
#Création de la variable "id" pour reconnaître le numéro du routeur
id=0
#Création de la variable TTL_max qui définira quel est le nombre de saut maximum par rapport à l'adresse
for adress in "$@"
do
#On récupère le nombre de sauts maximum en effectuant un premier Traceroute
TTL_max=$(sudo traceroute -n -I $adress|tail -n 1|cut -c1-2)
echo "Le TTL est de $TTL_max"
#Liste des options pour les tests Traceroutes
declare -a option=("-T -p 53" "-T -p 22" "-T -p 443" "-U -p 13" "-U -p 57" "-U -p 7" "-I")
for ttl in `seq 1 $TTL_max`
do
#Pour chaque options
for Noption in "${!option[@]}"
do
echo "-A -f $ttl -m $ttl ${option[Noption]} $@"
rt=$(sudo traceroute -A -f $ttl -m $ttl ${option[Noption]} $@ |tail -n 1|awk '{print $2" "$3" "$4}')
echo "$rt"
echo "$ttl/$TTL_max"
#Vérification des résultats
if echo "$rt" |awk '{print $1}' |grep "*"
then
echo "option utilisée : ${option[Noption]} TTL : $ttl"
# Si on arrive à la 7ème option et qu'on a toujours rien, on dit qu'il y a un routeur mais qu'on ne le connaît pas
if [ $Noption -eq 6 ]
then
echo $Noption
echo "NoID"$id" ""[ASINCONNU""$id""]" >> $ipformate.txt
id=$((id+1))
break
fi
else
#Si on trouve un chemin valide on le met dans le fichier suivant
echo "$rt" >> "$ipformate.route"
echo "$rt" >> "$ipformate.txt"
break
fi
chmod 764 $ipformate.txt
chmod 774 $ipformate.route
done
done
done
cp ../$ipformate/$ipformate.route ../internet
cd ../internet
##################Utilisation de xDot###################
echo "digraph route { " > internet.dot
for file in $(ls *.route)
#Définition de la première case de départ
do
echo -n "\"Nous [Départ]\" [shape=invhouse]" >> internet.dot
for (( lg=1; lg<$(cat $file |wc -l); lg++))
do
echo -n "\"$(cat $file|head -n $lg|tail -n1|cut -d";" -f 1,2|tr ";" " ")\"" >> $ipformate.dot
done
#Pour toutes les adresses par lesquelles il passe
#Boucle qui passe en revue toutes les lignes : affiche IP et AS
echo -n "\"Nous [Départ]\" ->" >> internet.dot
for (( lg=1; lg<$(cat $file |wc -l); lg++))
do
echo -n "\"$(cat $file|head -n $lg|tail -n1|cut -d";" -f 1,2|tr ";" " ")\" ->" >> internet.dot
done
#Pour la dernière adresse : affiche IP + AS (sans retour à la ligne)
echo -n "\"$(cat $file|head -n $lg|tail -n1|cut -d";" -f 1,2|tr ";" " ")\"" >> internet.dot
done
echo "}" >> internet.dot
xdot internet.dot