13/08/2008
200808130800 symon rrdcgi bin_sh
symon et rrdcgi
rrdcgi n'est pas mon ami
Comme indiqué clairement dans le man:rrdcgi is a sort of very limited script interpreterCe 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, _ma_var 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.
![Validate my Atom 1.0 feed [Valid Atom 1.0]](/valid-atom.png)
![Validate my RSS feed [Valid RSS]](/valid-rss-rogers.png)