Affichage de variables internes à un shell dans un navigateur

Bonjour,

Via un apache, dans un répertoire dédié aux cgi, je lance un script shell, qui fait des actions diverses (création de fichier, de variables, modification, affichage etc ...), mais l'affichage ne se passe pas correctement via un navigateur.

L'exécution de ce shell lancé directement sur la machine unix (AIX / ksh), affiche tout correctement.

En revanche, l'appel de ce script via un navigateur perd certaines variables internes au shell script (et pas d'autres ...)

Bout de code pour illustrer le problème( le exit est posé pour se limiter à la reproduction du problème) :

#!/bin/sh
echo Content-type: text/html
echo

#set -xv

## Initialisations

export LD_LIBRARY_PATH=/usr/local/pkg/lib:$[LD_LIBRARY_PATH]
export oldPATH=$PATH
....
....
## Main ##
# recupération du json correspondant au json_id fourni #
url_base='http://www.google.fr
curl -i -H 'Accept: application/json' -H 'Content-Type: application/json' $url_base > $recu; 

echo $recu
cat $recu
echo '<br>'
objet='sed -n 7p ${recu}'; echo 'Objet : '$objet
exit


Dans ce code, l'affichage fonctionne dans le navigateur, pour echo $recu (nom de fichier) et cat $recu (affichage du contenu du fichier)
En revanche, echo 'Objet : '$objet ne fonctionne que dans la console, pas via un navigateur.

Quelqu'un pourrait m'aider ?
Est-ce un problème de portée de variable ? Comment le résoudre ?

5 réponses

  1. Contributeur
    hello
    le sed est entouré de back-quotes, exécution de ?
    essayer avec export object=...
    0
    1. Bonjour,

      Voici le bout de code concernant $objet et les affichages, en cas de lancement via la console, puis via le navigateur (en mode cgi sur l'apache).

      Je perd la valeur de objet quand je lance via le navigateur (donc via l'apache)

      BOUT DE CODE CONCERNANT OBJET :
      ******************************
      ...
      echo 'Fichier JSON : '$recu'<br>'

      export objet='cat ${recu} |sed -n 7p';
      echo 'Objet : '${objet}'<br>';
      exit

      LANCEMENT EN LIGNE DE COMMANDE : AFFICHAGE
      ****************************************
      Content-type: text/html

      JSON id : 533966c2d89602e3b2536793<br>
      % Total % Received % Xferd Average Speed Time Time Time Current
      Dload Upload Total Spent Left Speed
      133 399 0 399 0 0 44249 0 --:--:-- --:--:-- --:--:-- 79800
      Fichier JSON : /app/list/logs/admin/temp/recu_533966c2d89602e3b2536793_2014_04_17_09_06_06.txt<br>
      Objet : {"nom_machine_logique":"quawas1f5","socle":"was_7","nom_serveur":"srvzentest","nom_application":"srvzentest_zentest.ear","nom_ear":"zentest.ear","action":"start","date_creation":"13/03/2014 11:11:11","date_debutjob":"17/04/2014 08:34:07","date_finjob":"17/04/2014 08:34:09","origine":"plugin","status":"success","etape":"startwas","date_etape":"01/04/2014 14:00:00","_id":"533966c2d89602e3b2536793"}<br>

      LANCEMENT VIA NAVIGATEUR : AFFICHAGE
      **********************************
      JSON id : 533966c2d89602e3b2536793
      Fichier JSON : /app/list/logs/admin/temp/recu_533966c2d89602e3b2536793_2014_04_17_09_05_45.txt
      Objet :

      Par ailleurs le fait d'exporter $objet ne fait que le rajouter au PATH et d'afficher l'ensemble des variables d'environnements chargées, ce je ne souhaite pas.
      0
      1. précision :

        en effet il s'agit de back-quote dans :
        export objet='cat ${recu} |sed -n 7p';

        je suppose que le navigateur n'affiche pas bien les ''
        0
        1. Contributeur
          export tout seul affiche les variables, pas suivi d'une assignation
          0
          1. Contributeur
            et
            sed -n 7p ${recu}
            à la place de
            objet='sed -n 7p ${recu}'; echo 'Objet : '$objet
            affiche quelque chose ?
            0