Plugin Munin en Ruby : il y a un piège
Par RaphAstronome le dimanche, 15 février 2009, 13:37 - Programmation - Lien permanent
Pour faire de jolis graphiques de charge serveur y a pas à dire Munin c'est pas mal. Faire un plugin pour ajouter ces propres graphs est aussi très facile.
La structure générale d'un plugin en bash est la suivante :
if [ "$1" = "autoconf" ]; then echo yes exit 0 fi if [ "$1" = "config" ]; then echo "configuration du plugin" exit 0 fi echo "valeurs"
Le truc c'est qu'en ruby et dans pas mal d'autres langages on aimerais pas mal éviter les "exit". J'ai donc fait :
#! /usr/bin/ruby if ARGV[0] == "autoconf" puts "yes" end if ARGV[0] == "config" puts "configuration du plugin" end if ARGV[0] == nil puts "valeurs" end
Le plugin se configure très bien mais il ne marche pas. En fait c'est tout bête : vu le fonctionnement des plugins fournis avec Munin on pourrait s'attendre à ce que pour récupérer les valeurs il lance la commande sans argument. Mais NON ! En fait il le lance avec un argument ... vide !
Donc il faut :
#! /usr/bin/ruby if ARGV[0] == "autoconf" puts "yes" end if ARGV[0] == "config" puts "configuration du plugin" end if ARGV[0].to_s.strip == "" # Ça change ici puts "valeurs" end
Commentaires
Pourquoi mettre une condition sur l'appel sans arguments ? tu mets juste puts "valeurs" et c'est tout...