Cette séance de TP consiste à effectuer un travail consistant à récupérer des informations générées par un équipement réseau et à en extraire des données pour diagnostiquer une panne.
Vous travaillez comme technicien dans une entreprise qui gère des équipements réseaux et des serveurs. Dans votre service, vous devez régulièrement diagnostiquer des pannes sur des routeurs.
Pour cela, vous pouvez effectuer une connexion SSH vers ce routeur et lancer une commande.
Il y a trois types de routeurs différents présents sur l’infrastructure que votre service gère:
Selon le routeur, les commandes à exécuter changent, ainsi que la sortie générée.
Écrire un script qui facilite le travail du technicien en n’affichant que certaines lignes et/ou colonnes.
La commande pour visualiser les caractéristiques des ports est
showport
Voici une sortie simplifiée pour un équipement Huawei:
----------------------------------------------------------------------
| Port | Data-2 | Data-3 | Data-4 | Data-5 | Data-6 |
----------------------------------------------------------------------
| 00/11/22/02 | 22 | 23 | 24 | 25 | 26 |
| 00/11/22/03 | 32 | 33 | 34 | 35 | 36 |
| 00/11/22/04 | 42 | 43 | 64 | 45 | 46 |
| 00/11/22/05 | 52 | 53 | 54 | 55 | 56 |
| 00/11/22/06 | 62 | 63 | 64 | 65 | 66 |
| 00/11/22/07 | 72 | 73 | 74 | 75 | 76 |
| 00/11/22/08 | 82 | 83 | 84 | 85 | 86 |
| 00/11/22/09 | 92 | 93 | 94 | 95 | 96 |
----------------------------------------------------------------------
La commande pour visualiser les caractéristiques des ports est
portinfo
Voici une sortie simplifiée pour un équipement Nokia:
| Port_ID | Data_2 | Data_3 | Data_4 | Data_5 | Data_6 |
| 00/11/22/02 | 22 | 23 | 24 | 25 | 26 |
| 00/11/22/03 | 32 | 33 | 34 | 35 | 36 |
| 00/11/22/04 | 42 | 43 | 64 | 45 | 46 |
| 00/11/22/05 | 52 | 53 | 54 | 55 | 56 |
| 00/11/22/06 | 62 | 63 | 64 | 65 | 66 |
| 00/11/22/07 | 72 | 73 | 74 | 75 | 76 |
| 00/11/22/08 | 82 | 83 | 84 | 85 | 86 |
| 00/11/22/09 | 92 | 93 | 94 | 95 | 96 |
La commande pour visualiser les caractéristiques des ports est
portdata
Voici une sortie simplifiée pour un équipement Edge:
Port Data2 Data3 Data4 Data5 Data6
00/11/22/02 22 23 24 25 26
00/11/22/03 32 33 34 35 36
00/11/22/04 42 43 64 45 46
00/11/22/05 52 53 54 55 56
00/11/22/06 62 63 64 65 66
00/11/22/07 72 73 74 75 76
00/11/22/08 82 83 84 85 86
00/11/22/09 92 93 94 95 96
Exemple de commande à ajouter dans un script pour afficher l’aide:
cat <<EOF
Ceci est l'aide du script nommé $0
Ici, \$0 est utilisé pour donné le nom du script en cours d'exécution
Dans l'aide on indique l'effet des paramètres
Par exemple:
-h --help
Affiche l'aide
-o FICHIER --output FICHIER
Fait quelque chose avec le fichier nommé FICHIER
EOF
Les fichiers sont à placer dans votre dépôt GitHub dans un nouveau
dossier nommé filtrage-donnees
.
On considère un fichier nommé lignes.txt
qui contient
les lignes suivantes:
1
2
3
4
5
Pour afficher les trois premières lignes, la commande suivante est utilisée:
$ cat lignes.txt | head -3
1
2
3
Pour afficher les trois dernières lignes, la commande suivante est utilisée:
$ cat lignes.txt | tail -3
3
4
5
Pour afficher uniquement la troisième ligne, on combine ces commandes:
$ cat lignes.txt | head -3 | tail -1
3
afficherlignes
Écrire un script afficherlignes
qui prend en paramètres
les éléments suivants:
-s S
: affiche à partir de la ligne S
-n N
: affiche N
lignes-v
ou --verbose
: qui affiche des messages
d’informations sur l’exécution du script (par exemple:
valeur de S=7
)-h
ou --help
: qui affiche l’aide puis
quitte le programme sans l’exécuterCe script nommé compte
:
#!/bin/bash
wc -l
Appelé ainsi:
cat /etc/passwd | ./compte
Affichera le nombre de lignes dans /etc/passwd
S’inspirer de ce script pour réaliser le travail demandé.
Le script filtrerports
suivant est incomplet.
Vous devez le modifier pour qu’il récupère les paramètres qui lui
sont passés et pour les faire passer à la commande awk
donnée en fin de script.
#!/bin/bash
# Ajouter ici la gestion des paramètres
# En remplaçant les deux lignes ci-dessous
numeroport=00/11/22/05
titrecolonne=Data5
./getportinfo 192.168.4.2 | awk -v port=$numeroport -v colonne=$titrecolonne -v lignetitre=1 '
NR == lignetitre {
for (i = 1 ; i <= NF ; i++) {
if ($i == colonne) {
index_colonne=i
}
}
}
$1 == port {print $index_colonne}
'
Le script getportinfo
qui permet de simuler les données
envoyées par un routeur est le suivant (il doit être exécutable):
#!/bin/bash
case "$1" in
192.168.0.*)
cat <<EOF
---------------------------------------------------------------------------
| Port | Data-2 | Data-3 | Data-4 | Data-5 | Data-6 |
---------------------------------------------------------------------------
| 00/11/22/02 | 22 | 23 | 24 | 25 | 26 |
| 00/11/22/03 | 32 | 33 | 34 | 35 | 36 |
| 00/11/22/04 | 42 | 43 | 64 | 45 | 46 |
| 00/11/22/05 | 52 | 53 | 54 | 55 | 56 |
| 00/11/22/06 | 62 | 63 | 64 | 65 | 66 |
| 00/11/22/07 | 72 | 73 | 74 | 75 | 76 |
| 00/11/22/08 | 82 | 83 | 84 | 85 | 86 |
| 00/11/22/09 | 92 | 93 | 94 | 95 | 96 |
---------------------------------------------------------------------------
EOF
;;
192.168.3.*)
cat <<EOF
| Port_ID | Data_2 | Data_3 | Data_4 | Data_5 | Data_6 |
| 00/11/22/02 | 22 | 23 | 24 | 25 | 26 |
| 00/11/22/03 | 32 | 33 | 34 | 35 | 36 |
| 00/11/22/04 | 42 | 43 | 64 | 45 | 46 |
| 00/11/22/05 | 52 | 53 | 54 | 55 | 56 |
| 00/11/22/06 | 62 | 63 | 64 | 65 | 66 |
| 00/11/22/07 | 72 | 73 | 74 | 75 | 76 |
| 00/11/22/08 | 82 | 83 | 84 | 85 | 86 |
| 00/11/22/09 | 92 | 93 | 94 | 95 | 96 |
EOF
;;
192.168.4.*)
cat <<EOF
Port Data2 Data3 Data4 Data5 Data6
00/11/22/02 22 23 24 25 26
00/11/22/03 32 33 34 35 36
00/11/22/04 42 43 64 45 46
00/11/22/05 52 53 54 55 56
00/11/22/06 62 63 64 65 66
00/11/22/07 72 73 74 75 76
00/11/22/08 82 83 84 85 86
00/11/22/09 92 93 94 95 96
EOF
;;
*)
echo "Erreur: adresse inconnue" >&2
exit 8
;;
esac
Il est à utiliser pour tester le script filtrerports
filtrerports
et
getportinfo
et les placer dans le dossier
filtrage-donnees
filtrerports
filtrerports
pour qu’ils prennent les
paramètres suivant en compte et les applique aux variables
numeroport
et titrecolonne
:
-p
ou --port
permet d’indiquer le numéro
de port-t
ou --titrecol
permet d’indiquer le
titre de la colonne-v
ou --verbose
: qui affiche des messages
d’informations sur l’exécution du script (par exemple:
valeur de S=7
)-h
ou --help
: qui affiche l’aide puis
quitte le programme sans l’exécuter