Nous utilisons des cookies pour améliorer votre expérience.

MacBidouille

Créer un script Unix sous OS X

Initiation et rappels des bases pour réaliser un script Shell.


On s'attaque à la création de la page html

Là encore et toujours pour le même but pédagogique, je ne vais pas choisir une méthode optimale, mais je vais créer des fichiers temporaires pour la mise sous forme html des données. Pour la première fonction (extract_adapter), il n'y a pas grand chose à faire, car j'ai juste besoin de rajouter des balises <br> à la fin de chaque ligne. Ces balises html permettent de faire un retour à la ligne. Ma nouvelle fonction pour cela, make_html_adapter, va donc commencer par placer dans un fichier temporaire, nommé tmp_adapter, les informations issues de la fonction extract_adapter, puis je vais ensuite rajouter une balise <br> à la fin de chaque ligne. Pour cela, je vais réutiliser la fonction sed, mais cette fois de la façon suivante :

la première ligne de cette fonction utilise donc la fonction extract_adapter que l'on a écrit juste avant, et place le résultat de cette fonction dans le fichier tmp_adapter, grâce au caractère >. La deuxième ligne exploite ce fichier (cat tmp_adapter), et de nouveau, un pipe pour cascader avec sed. Là, quelques explications détaillées sont nécessaires. La syntaxe "sed 's/a/b/' permet de substituer le caractère a par le caratère b. Moi, je veux rajouter à chaque fin de ligne la balise <br>. Le $ permet de faire référence à la fin d'une ligne, que je substitue par une baliser <br>. Ainsi, je rajoute bien cette balise à la fin de chaque ligne. Ensuite, je place le résultat de tout cela dans mon fichier temporaire tmp_adapter (j'écrase ce que contenait ce fichier avant, pour remplacer son contenu pour ce que je veux, c'est à dire avec les balises <br> en fin de ligne.
Pour détailler un peu, voici quelques exemples :
sed 's/a/b/' : remplace a par b
sed 's/abc/def/' : remplace la chaîne de caractères abc par la chaîne def
sed 's/a$/b/' : remplace les a en fin de ligne (et uniquement ceux en fin de ligne) par b, le $ permettant de faire référence à la fin d'une ligne donc.
Deuxième fonction à écrire dans cette partie, la fonction make_html_config (je ferais la fonction make_html_devices en dernier, car c'est la plus compliquée, et que je veux traiter l'exemple le plus complexe en dernier, afin d'avoir une difficulté croissante).

Tout comme avant, je place le résultat de la fonction extract_config dans un fichier temporaire, nommé tmp_config. L'information extraite par la fonction extract_config est l'état de la grappe RAID, qui peut être OPTIMAL ou bien DEGRADED. Si l'état est OPTIMAL, je veux que cela s'affiche en gras et en vert dans ma page Web, comme ça je peux voir en un coup d'oeil que tout va bien, sinon, c'est l'état est DEGRADED, je veux le voir toujours en gras, mais en rouge, dans ma page Web. Il suffit donc de reprendre sed, et de lui dire de remplacer un éventuel OPTIMAL par du code html écrivant OPTIMAL et vert et en gras, et de même, d'écrire le code html pour remplacer un simple DEGRADED par un DEGRADED en gras et en rouge. Là où ça se complique, c'est pour écrire le code html <font color = "red"> par exemple. En effet, le " est utilisé dans la fonction sed pour définir l'action à effectuer. Pour ne pas perturber sed entre le " du code html et le " propre à sed, je vais rajouter un devant les " propres au code html, afin que sed ne les interprète pas. Le résultat final est écrit dans le fichier tmp_config, qui contient donc maintenant les infos que je veux, mais avec du code html.
La dernière fonction, make_html_devices, reprend un peu tout ce que je viens de faire (mettre ce qui va bien en vert, et ce qui ne va pas en rouge), mais je veux en plus que le résultat de cette fonction soit placé dans un tableau html, il me faut donc rajouter des balises <tr> et <td> en début de ligne entre autre. On a vu que le caractère $ permettait de faire référence à la fin d'une ligne. Là, j'ai besoin de faire référence au début d'une ligne, et pour cela, on utilise le caractère ^. J'ai donc un sed qui commence de la façon suivante : sed "s/^....", afin de faire référence au début d'une ligne donc. En plus de tout cela, il faut que le résultat soit placé entre des balises <table> et </table>, chose dont s'occupe la dernière ligne de ma fonction make_html_devices.

Voilà, on a maintenant trois fichiers temporaires (tmp_adapter, tmp_config et tmp_devices) qui contiennent les informations pertinentes, et déjà mises en html. On peut donc s'attaquer à la mise en page finale, dernière grande partie de ce script.

Partager sur

Sondage

Comptez-vous acheter un Vision Pro ?