Tags

bin_sh freebsd install jail kimsufi rrdcgi symon var_empty

Powered by

blOg
maRkdown
awK
shEll

13/08/2008

[ symon rrdcgi bin_sh ]

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 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, _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

Pour les amis

Le tout est disponible ici.


Lien vers ce billet