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
EOFLes 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
3Pour afficher les trois dernières lignes, la commande suivante est utilisée:
$ cat lignes.txt | tail -3
3
4
5Pour afficher uniquement la troisième ligne, on combine ces commandes:
$ cat lignes.txt | head -3 | tail -1
3afficherlignesÉ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 -lAppelé ainsi:
cat /etc/passwd | ./compteAffichera 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
;;
esacIl est à utiliser pour tester le script filtrerports
filtrerports et
getportinfo et les placer dans le dossier
filtrage-donneesfiltrerportsfiltrerports 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