13/08/2008
rrdcgi n'est pas mon ami
Comme indiqué clairement dans le man:
rrdcgi is a sort of very limited script interpreter
Ce qui signifie que ce genre de chose ne fonctionne pas:
<RRD::SETVAR _ma_var un>
<RRD::SETVAR _mon_block
multi
ligne
<RRD::GETVAR _ma_var>
ligne
multi
>
<RRD::GETVAR _mon_block>
<RRD::SETVAR _ma_var deux>
<RRD::GETVAR _mon_block>
Lors du deuxième appel, mavar n'est pas réévaluée. Moi qui pensais pouvoir définir un squelette pour RRD::GRAPH agrémenté de RRD::GETVAR, c'est loupé !
J'ai eu beau retourner le problème dans tous les sens (même à coup de réécriture d'url), pas moyen d'utiliser rrdcgi comme je le veux.
Est-il utile de préciser que je n'ai pas réussi à échapper une quote (simple ou double) ?
J'ai un autre ami
Comme d'habitude, les solutions les plus simples sont souvent les meilleures. Quelques lignes de shell et le tour est joué !
#!/bin/sh
. common.inc
_graph() {
[ snip definition du graph ]
}
head 'Titre de la page'
_graph 'Titre du graphique' <start>
_graph 'Titre du graphique' <autre_start>
footer
J'ai des amis
On active tout ça dans lighttpd.conf (extraits):
url.access-deny = ("~", ".inc") # defini par default
static-file.exclude-extensions = (".php", ".pl", ".fgci", ".sh") # on rajoute ".sh"
cgi.assign = ( ".pl" => "/usr/bin/perl", ".sh" => "/bin/sh" ) # idem
Et on peut admirer le résultat ici. On remarquera que:
- c'est brut de fonderie
- mon serveur n'en fout pas une ramée :)
Pour les amis
Le tout est disponible ici.
Pages : 1
Rss