Sans se mentir, il y a une hiérarchie dans les langages ; certains sont cool et montrent que vous êtes des vrais programmeurs : l'assembleur, le C, rust, Go … D'autres sont « du scripting » : php, python, R … Enfin certains sont méprisés comme bash.
Ce projet de monitoring est volontairement fait en bash*; pour le fun.
https://github.com/jul/FAIM
- Enfin, il requiert en dépendance socat pour écrire et recevoir les messages, et gnuplot-lite pour les collecteurs.
Principe
La raison pour laquelle ce projet est à ne PAS déployer en prod est qu'il communique les résultats des sondes sur une adresse de broadcast UDP.
Chaque sonde est un programme que l'on peut appeler en bash et qui ressort les données sous la forme "nom d'hôte":"nom de la métrique":valeur:"(GAUGE|DERIVE|COUNTER)"
(la dernière information n'est pas utilisée pour l'instant). À la munin.
Un lien symbolique de la sonde vers sonde_enabled permet de l'activer.
Bref, c'est vraiment tout con.
La doc
Je me suis amusé à tester l'autodocumentation en POD (Plain Old Documentation de Perl) que j'ai probablement vu et repiqué aux sondes munin, dont certaines sont adaptées quasi à l'identique.
Un petit script bash qui mêle pandoc et pod permet de générer la doc finale.
Comme quoi, on peut auto-documenter du code bash.
À quoi ça peut servir ?
À s'amuser. En plus, ce système était fait pour pouvoir pisser de la mesure au plus vite que l'overrun permettait, mais un problème de non portabilité vers freeBSD de date m'empêchant d'utiliser les nanosecondes, ça descend au mieux à 1 secondes.
Vitesse parfois nécessaire pour voir des phénomènes bref que des outils se basant sur RRD peuvent lisser.
En plus vu les dépendances, ça se déploit user space ;D

# tss tss
Posté par Pol' uX (site web personnel) . Évalué à 10 (+8/-0).
[Tousse, tousse.]
Perso je ne méprise pas bash, mais je suis émerveillé de voir jusqu'où la pugnacité peut porter ses excès, et je suis incertain de savoir si je dois admirer une certaine grande tolérance à ses nombreuses faiblesses ou le talent effronté de celles et ceux qui le pratique.
Adhérer à l'April, ça vous tente ?
[^] # Re: tss tss
Posté par arnaudus . Évalué à 3 (+0/-0).
Disons qu'il y a des langages dont l'usage ne reflète absolument pas leurs qualités intrinsèques, et c'est ça qui génère un certain "mépris". Les contingences historiques (quel langage est arrivé avant), commerciales (quel système a été mieux vendu), logicielles (langage pas top associé à un OS super), etc. vont faire que des trucs comme bash vont prendre une importance disproportionnée, et générer énormément de dette technique qu'on est encore en train de payer.
[^] # Re: tss tss
Posté par Jul (site web personnel) . Évalué à 3 (+2/-0).
sambaldap et ldaptools sont des cas à part :)
# Bash méprisé
Posté par abriotde (site web personnel, Mastodon) . Évalué à 3 (+2/-0).
Si Bash est méprisé il y a une raison: Il n'évolue pas (ou très peu) et il est parfois bien complexe et casse gueule de faire des choses qui dans n'importe quel autre langages sont simples. Cela veut aussi dire que l'on ne méprise pas les développeurs Bash loin de là.
Car Bash reste essentiel à tout admin sys (Pas forcément pro) qui souhaite gérer un peu son Unix. S'il est essentiel c'est un peu car il est toujours présent sur tout les Unix et généralement le shell par défaut (Sur Linux au moins) mais aussi car il n'évolue pas. Cela veut dire qu'une programme Bash qui fonctionne aujourd'hui à 99% de chance fonctionner sur la version de Bash qui sera présent dans la machine dans 10 ou 20 ans, quelques soient les mises à jour.
Sa force, c'est sa faiblesse.
Personnellement Bash me sert à seter un environnement de bas et lancer les différents programmes, je continue en Python (Sans module externes) quand cela commence à demander un peu de trop de chose pour arriver sur le soft de destination en toute fin (Souvent lancé après le Python depuis le Bash).
Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.
[^] # Re: Bash méprisé
Posté par abriotde (site web personnel, Mastodon) . Évalué à 1 (+0/-0). Dernière modification le 05 novembre 2025 à 18:12.
PS : En Bash un simple
if [[ $a == $b ]]n'est jamais assuré de fonctionné sans connaitre les valeurs possibles de a et b… qui ne sont pas typés. Alors une version plus sécurisé estif [[ "a$a" == "a$b" ]](notez la lisibilité) mais cela ne fonctionnera pas toujours, si a contient des retour à la ligne ou des guillemets.Bref Bash ça crash dès le moindre changement extérieur mais pas sans.
Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.
[^] # Re: Bash méprisé
Posté par Jul (site web personnel) . Évalué à 4 (+3/-0).
En fait, il y a un guide de programmation en bash fort bien fait et un analyseur de code statique* bien fait lui aussi qui reprend toutes les bonnes pratiques du susdit manuel.
et quand on suit les bonnes pratiques, c'est plus dur de se tirer une balle dans le pied.
[^] # Re: Bash méprisé
Posté par abriotde (site web personnel, Mastodon) . Évalué à 2 (+2/-1).
[mode troll]
bien fait mais qui date d'il y a 20 ans ;) Le look date et les fonctionnalités aussi.
[/mode troll]
Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.
# diag.dot
Posté par nonas . Évalué à 2 (+0/-0).
Salut,
Pour info, je n'ai pas trouver le diag.dot dans le dépôt, uniquement le png.
[^] # Re: diag.dot
Posté par Jul (site web personnel) . Évalué à 2 (+1/-0).
ici : je l'avais oublié
https://github.com/jul/FAIM/blob/main/img/diag.dot
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.