Salut à tous, c'est Florian du site ITConnect, bienvenue dans cette nouvelle vidéo dédiée �
l'apprentissage du scripting Bash sous Linux. Dans cette vidéo, nous allons nous intéresser
tout particulièrement aux boucles while. Ces boucles while vont nous permettre d'exécuter
une action tant qu'une condition est vraie. On va pouvoir répéter une action pendant
un temps défini et on va voir tout ça dans cette vidéo. Déjà, on va étudier la syntaxe des boucles
while et puis après, on va voir comment l'utiliser au travers de différents exemples. N'hésitez pas
à regarder les précédentes vidéos de cette série si vous souhaitez apprendre le scripting Bash et
que vous partez vraiment de zéro. Avant de passer à la suite, pensez à vous abonner à la chaîne
YouTube ITConnect. Voici à l'écran la syntaxe de base d'une boucle while. On va retrouver le mot
clé while et entrecrocher, on va avoir la condition que l'on veut évaluer. Tout le temps que cette
condition est vraie, on va exécuter le code qui est présent entre les mots clés do et done
tout à la fin. Au niveau de la syntaxe, c'est un mélange entre les boucles for et les structures
conditionnelles if. Avec les structures conditionnelles, on met if et entrecroche la
condition. Ensuite, on a le then et le else qui peuvent venir après, puis on a le fi aussi à la
fin. Avec les boucles for, on a la condition et ensuite on a do et done. On a un mélange
puisqu'on va avoir while et la condition entrecrochées comme avec le if et ensuite le do et le done comme
avec le for, pour faire la comparaison et être au clair sur les différentes syntaxes. Si on veut
traduire ça littéralement, on pourrait dire que tant que la condition est vraie, on fait ceci
et puis ça répète. On va itérer sur la boucle jusqu'à ce que cette condition soit fausse
Maintenant, on va voir comment utiliser la boucle while au travers de différents exemples. Voici un
premier exemple qui est affiché à l'écran. Ici, la variable nombre est égale à 1. En fait
tant que la variable nombre, sa valeur est plus ou moins égale à 5, on va écrire un message
nombre de points, et on va afficher ce fameux nombre. On va appeler la variable et on va
incrémenter de 1 la variable nombre via la ligne qui est ici. En principe, on va avoir dans la
console un nombre 1, 2, 3, 4, 5. Une fois que le nombre sera égal à 6, on va sortir de la boucle
On pourrait même mettre ici une petite ligne boucle terminée. On va enregistrer ça
on va le lancer, on va exécuter, et on voit bien qu'on a les nombres 1, 2, 3, 4, 5. Ensuite
on a la condition qui n'est plus vraie puisque dollarNum est égal à 6, donc il n'est pas plus
petit ou égal à 5. À partir de là, on sort de la boucle et j'ai bien mon message boucle terminée
qui s'est affiché. Voilà pour ce premier exemple sur les boucles while. On va basculer sur un
second exemple où je vous montre qu'on peut avoir dans le while deux conditions. Comme on a
possibilité d'avoir deux conditions avec un if, par exemple dans une structure conditionnelle
on va pouvoir évaluer deux conditions. Chaque condition entre crochets, le et ici permet de
dire qu'il faut que cette condition soit vraie et celle-ci. Les deux conditions doivent être vraies
pour qu'on continue à itérer sur cette boucle. On pourrait remplacer le et ici par le ou, comme on
l'avait déjà vu, avec deux barres verticales, le fameux caractère du pipeline. Ici, on va rester
sur le et, donc là j'ai deux variables, un nombre 1, un nombre 2. Pour que la boucle continue
on va dire qu'il faut que la première valeur soit plus petite ou égal à 10 et la deuxième plus
petite ou égal à 5. En principe, on ne devrait jamais aller au-delà de 5 au niveau du texte qui
sera renvoyé dans la console. D'ailleurs, on va pouvoir le vérifier très facilement puisqu'on
va exécuter le script. J'ai bien un nombre 1, 2, 3, 4, 5 à chaque fois et ensuite ça s'arrête à 5
puisque quand le nombre 2 est égal à 6, cette condition n'est plus vraie. On sort de la boucle
on pourrait très facilement voir la différence si on remplace le et par le ou. Là, il faut que
l'une ou l'autre des conditions soient vraies pour que l'on exécute le code de la boucle. Dans ce
cas-là, on voit bien tout de suite la différence au niveau du comportement. Une fois que les deux
conditions sont fausses, c'est-à-dire qu'il faut que le nombre 1 soit supérieur à 10
c'est à partir de là qu'on sort de la boucle. Pour finir, nous allons voir un troisième exemple
qui correspond vraiment à un cas d'utilisation pratique de la boucle WAI. L'idée va être la
suivante. On imagine que ma machine Linux est protégée par l'outil Krotsek, qui permet de
détecter et bloquer les attaques. J'avais fait des vidéos sur cette solution. Mon idée, c'est de me
dire que j'ai un fichier qui s'appelle ip.txt, qui est mentionné ici, qui contient des adresses IP
malveillantes. D'ailleurs, on pourrait aller voir ce fichier-là. J'ai mis des IP aléatoirement
j'ai 4 adresses IP, comme on le voit, une adresse IP par ligne. Je voudrais parcourir
l'intégralité de ce fichier, de façon à bannir chaque adresse IP. Si je n'ai pas un script pour
le faire, ça peut être assez contraignant, puisqu'il va falloir faire une commande par règle
Du coup, ça peut être assez long. D'ailleurs, la commande qui permet de bannir une IP, c'est
celle-ci, cscli-decision-add-ip, et là on met l'adresse IP. Mon idée, ça va être de prendre
une boucle wild, on aurait pu faire autrement, on va prendre la boucle wild, on va parcourir le
fichier ligne par ligne, de façon à exécuter une action. On voit qu'on peut même intégrer
bien sûr, dans une boucle wild, autre chose, comme ici une structure conditionnelle. Là
on a une première ligne un peu bizarre, qui est écrite de façon différente vis-à-vis de la
condition entre crochets, puisque là on va lui dire de lire le contenu du fichier, et le contenu
du fichier, on va l'injecter à la fin avec le redirecteur, comme ceci, et on va mettre du coup
ip.txt. On va indiquer le IFS en majuscule, c'est pour indiquer le caractère séparateur �
l'intérieur du fichier. Là, c'est blanc, puisque le caractère séparateur n'y en a pas, c'est une
nouvelle ligne à chaque fois. Par exemple, nous aurions pu préciser le dièse, si c'est le dièse
qui sépare chacune des valeurs dans le fichier. Tout dépend comment est formaté ce fameux fichier
Ensuite, le read-rip, ça permet de dire qu'on va lire chaque valeur du fichier, et on va associer
chaque valeur à la variable ip à chaque itération de la boucle. Le tirer-r, c'est pour ne pas tenir
compte des caractères d'échappement, en l'occurrence le slash inversé. Une fois qu'on va avoir fait ça
on va parcourir l'intégralité de la boucle. Quand on sera arrivé à la fin du fichier
la condition sera fausse, et donc on va sortir de la boucle. Ensuite, le if est utilisé pour vérifier
que la ligne n'est pas vide. Par exemple, si j'ai sauté une ligne entre deux ip, et que je me retrouve
avec une valeur vide, ça va me renverrer une erreur au moment de faire exécuter cette commande
Là, je regarde si la ligne n'est pas vide, donc si la valeur d'ip n'est pas vide
je crée la règle. La règle, on l'appelle simplement notre variable $ip. Je pourrais
m'amuser à exécuter ce script pour vous montrer ce que ça donne. J'ai à chaque fois une ligne avec
le écho de la commande complète qui a été exécutée, puisque ça correspond au écho qui est ici. J'ai
voulu afficher quand même la commande associée à chaque fois, et là c'est le résultat de la
commande CSCLI en elle-même. Donc là, ça a bien ajouté la décision au niveau de mon
crottesèque. D'ailleurs, je pourrais faire un CSCLI décision liste, et je retrouve bien ici mes
adresses ip bannies au niveau de mon crottesèque local. J'ai agrandi la fenêtre, comme ça on voit
mieux, mais ça a permis d'automatiser la création de ces fameuses règles. Nous venons de voir comment
utiliser les boucles WILE en bâche. J'espère que cette vidéo vous a plu, n'hésitez pas à commenter
à liker, à partager, à me poser vos questions en commentaire si vous en avez. Il y aura d'autres
vidéos sur le scripting bâche, donc n'hésitez pas à vous abonner pour ne rien manquer ! A très vite