CGI en Shell et affichage non bufferisé

Voilà, dans le cadre d’un script CGI en Bash, je cherche à faire en sorte que l’affichage du résultat d’une commande soit non bufferisé.

Exemple parlant :

echo "<PRE>$(traceroute "$host")</PRE>"

mon CGI appelle la commande traceroute, l’affichage du résultat de cette commande n’est affiché qu’après la fin de la commande (donc la page affichée dans le navigateur reste blanche le temps que la commande ait terminé).

Je souhaiterais au contraire que l’affichage du traceroute se fasse au fur et à mesure de son avancement (comme dans un shell interactif)

(je sais je ne choisis pas la facilité en faisant un CGI en Shell, mais il doit bien y avoir un moyen?)

Merci

Je suis pas un spécialiste de CGI, mais bon ta commande pose problème même sans être dans une environnement CGI. Si tu fait ça :

echo '<PRE>' traceroute "$host" echo '</PRE>'
Ça fait ce que tu veux ? Sinon il va falloir faire des choses bien plus complexes pour récupérer les informations au fure et à mesure en js.

Merci mais le résultat est le même, ça ne change rien.

En C je connais la façon de faire ( fonction fflush() de stdio.h).

Pour le shell il y aurait 2-3 hacks : perkin.org.uk/posts/how-to-f … ering.html

mais dans un CGI ça n’a pas l’air de fonctionner

Si fflush() marche, je ne vois pas pourquoi stdbuf -o0 ne fonctionnerais pas.

stdbuf -o0 traceroute "$host"

ça fonctionne… sur une OpenSuse!

mais pas sur ma Debian Wheezy :013

(apache 2 dans les deux configs)