Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre à l'essai
    Profil pro
    Futur administrateur systèmes
    Inscrit en
    décembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Futur administrateur systèmes

    Informations forums :
    Inscription : décembre 2010
    Messages : 34
    Points : 23
    Points
    23

    Par défaut CGI bash/ apache / Gnuplot

    Bonjour,

    Tout d'abord, le problème que je vais vous exposer étant lié à Apache et travaillant sous RedHat, je ne sais pas si je suis dans la bonne section ! Du coup, à lecture de mon post, si un modo/admin décide de déplacer mon post au bon endroit, il n'y a pas de problème !


    Le problème :


    J'essaie de mettre en place une CGI qui va me permettre, grâce à Gnuplot de générer des graphiques sur la consommation RAM/CPU de clusters. Comme je n'ai jamais fait ça, je test en local sur ma machine :

    - J'ai installé Apache
    - Dans mon dossier cgi-bin j'ai : mes deux " pages web " pour ma CGI, j'ai un .txt contenant des informations sur un cluster ( qui permet de générer le graph ) et un autre .txt contenant les commandes gnuplot que je souhaite exécuter.


    Voici à quoi ressemble le code de ma page principale de ma CGI pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #!/bin/bash
     
    echo "Content-type: text/html"
    echo ""
     
    echo '
    <html>
    <head>
    <meta http-equiv="Content-Type" content="test/html"; charset=UTF-8">
    <title> CLUSTER GRAPH </title>
    <h1> Cluster Graph </h1>
    <hr size="4" color="blue">
    </head>
     
    <body>
     
    <p> Press the button to generate the graph ! </p>
    <form action="GNUGRAPH.sh" target="_blank">
    <button name="buton">Generate</button>
    </form>
     
    </body>
    </head>
    </html> '


    Donc sur cette page se trouve un bouton " Générer " qui, une fois que l'on clique dessus, va ouvrir dans un nouvel onglet ma deuxième page dont voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #!/bin/bash
     
    echo "Content-type: text/html"
    echo ""
     
    echo "
    <html>
    <head>
            <title> Cluster Graph </title>
            <h1> Cluster Graph </h1>
    <hr size="4" color="blue" >
     
    </head>
    <body>
     
    <PRE>"
    gnuplot gnuplot_test.txt
     
    echo "
    </PRE>
     
    </body>
    </html>
    "

    Cette page doit exécuter la commande " gnuplot gnuplot_test.txt " afin de générer mon graphique. Voici le contenu de mon " gnuplot_test.txt " :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    f(w) = (strlen(w) > 10 ? word(w, 1) . "\n" . word(w, 2) : w)
     
    set title "CLUSTER 1"
    set terminal png truecolor size 960, 720
    set output 'cluster2.png'
    set bmargin at screen 0.1
    set key top center
    set grid
    set style data histograms
    set style fill solid 1.00 border -1
    set boxwidth 0.7 relative
    set yrange [0:]
    set format y "%g%%"
    set datafile separator ","
    plot "/var/www/cgi-bin/CLUSTER_1.txt" using 2:xtic(f(stringcolumn(1))) title " CPU consumption (%) ", \
    '' using 3 title " RAM consumption (%)", \
    '' using 0:($2+1):(sprintf("%g%%",$2)) with labels notitle, \
    '' using 0:($3+1):(sprintf("     %g%%",$3)) with labels notitle

    Le graphique qui doit être généré doit ressembler à cela ( le but final c'est qu'il s'affiche sur ma page directement, mais pour le moment je veux juste le générer ) :

    Nom : cluster1.png
Affichages : 31
Taille : 32,1 Ko


    Sauf que... ça ne fonctionne pas ! La commande " gnuplot gnuplot_test.txt " s'execute parfaitement manuellement si je suis dans le dossier /cgi-bin/, mais elle ne fonctionne pas via mon interface et je ne comprends pas pourquoi !

    Du coup j'ai été jeter un petit coup d'oeil dans mon /etc/httpd/logs/error_log et voici le contenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    [Wed Apr 10 10:21:00.467978 2019] [cgi:error] [pid 11948] [client ::1:46340] AH01215: , referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 10:21:00.468099 2019] [cgi:error] [pid 11948] [client ::1:46340] AH01215: "gnuplot_test.txt", line 5: , referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 10:21:00.468289 2019] [cgi:error] [pid 11948] [client ::1:46340] AH01215: util.c: Permission denied, referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 10:21:00.468333 2019] [cgi:error] [pid 11948] [client ::1:46340] AH01215: , referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 10:50:14.995409 2019] [cgi:error] [pid 11969] [client ::1:48676] AH01215: , referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 10:50:14.995503 2019] [cgi:error] [pid 11969] [client ::1:48676] AH01215: set output 'cluster2.png', referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 10:50:14.995562 2019] [cgi:error] [pid 11969] [client ::1:48676] AH01215:                          ^, referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 10:50:14.995653 2019] [cgi:error] [pid 11969] [client ::1:48676] AH01215: cannot open file; output not changed, referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 10:50:14.995772 2019] [cgi:error] [pid 11969] [client ::1:48676] AH01215: "gnuplot_test.txt", line 5: util.c: Permission denied, referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 10:50:14.995785 2019] [cgi:error] [pid 11969] [client ::1:48676] AH01215: , referer: http://localhost/cgi-bin/Index.sh

    Je ne comprends pas ces erreurs... Pourriez-vous m'expliquer ?


    Aussi, au cas où, j'ai même testé un chmod 777 sur mes fichiers pour voir si c'était un problème de droit, mais rien n'y fait :

    Nom : 1.png
Affichages : 26
Taille : 16,3 Ko



    Auriez-vous une idée ?


    Merci d'avance !

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    novembre 2010
    Messages
    2 724
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : novembre 2010
    Messages : 2 724
    Points : 7 428
    Points
    7 428

    Par défaut

    salut,

    à vue de nez ça ressemble à un problème de droits, apache s'exécute en www-data ou similaire, du coup le script aussi, du coup le fichier est créé ou modifié avec les mêmes droits
    ça veut donc dire que le répertoire dans lequel atterrit le fichier créé doit autoriser www-data à écrire

    à tester
    Avant donc que d'écrire, apprenez à penser.
    Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
                                                        - Nicolas Boileau, L'Art poétique

  3. #3
    Membre à l'essai
    Profil pro
    Futur administrateur systèmes
    Inscrit en
    décembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Futur administrateur systèmes

    Informations forums :
    Inscription : décembre 2010
    Messages : 34
    Points : 23
    Points
    23

    Par défaut

    Citation Envoyé par BufferBob Voir le message
    salut,

    à vue de nez ça ressemble à un problème de droits, apache s'exécute en www-data ou similaire, du coup le script aussi, du coup le fichier est créé ou modifié avec les mêmes droits
    ça veut donc dire que le répertoire dans lequel atterrit le fichier créé doit autoriser www-data à écrire

    à tester
    Je vais tester ça !

    Petit truc en plus :

    Si dans mon gnuplot_test.txt, je change mon " gnupot gnuplot_test.txt " pour un " cat gnuplot_test.txt | gnuplot ", voilà ce qui apparait lorsque je clique sur mon boutton :

    Nom : 2.png
Affichages : 23
Taille : 190,4 Ko



    Je suppose donc qu'il y a bien quelque chose qui se passe, puisqu'il y a " PNG " au tout début, mais toujours pas de png généré. Voilà ce que dit mon " error_log " :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [Wed Apr 10 13:56:26.727145 2019] [cgi:error] [pid 11969] [client ::1:54820] AH01215:                  , referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 13:56:26.727173 2019] [cgi:error] [pid 11969] [client ::1:54820] AH01215:       , referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 13:56:26.727190 2019] [cgi:error] [pid 11969] [client ::1:54820] AH01215:    , referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 13:56:26.727206 2019] [cgi:error] [pid 11969] [client ::1:54820] AH01215:     , referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 13:56:26.727216 2019] [cgi:error] [pid 11969] [client ::1:54820] AH01215: ^, referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 13:56:26.727238 2019] [cgi:error] [pid 11969] [client ::1:54820] AH01215:        , referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 13:56:26.727251 2019] [cgi:error] [pid 11969] [client ::1:54820] AH01215:   , referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 13:56:26.727337 2019] [cgi:error] [pid 11969] [client ::1:54820] AH01215: cannot open file; output not changed, referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 13:56:26.727431 2019] [cgi:error] [pid 11969] [client ::1:54820] AH01215:          line 0: util.c: Permission denied, referer: http://localhost/cgi-bin/Index.sh
    [Wed Apr 10 13:56:26.727440 2019] [cgi:error] [pid 11969] [client ::1:54820] AH01215: , referer: http://localhost/cgi-bin/Index.sh

  4. #4
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    novembre 2010
    Messages
    2 724
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : novembre 2010
    Messages : 2 724
    Points : 7 428
    Points
    7 428

    Par défaut

    en modifiant ton Content-type pour du image/png ça doit fonctionner
    Avant donc que d'écrire, apprenez à penser.
    Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
                                                        - Nicolas Boileau, L'Art poétique

  5. #5
    Membre à l'essai
    Profil pro
    Futur administrateur systèmes
    Inscrit en
    décembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Futur administrateur systèmes

    Informations forums :
    Inscription : décembre 2010
    Messages : 34
    Points : 23
    Points
    23

    Par défaut

    Citation Envoyé par BufferBob Voir le message
    en modifiant ton Content-type pour du image/png ça doit fonctionner
    Voilà ce que j'ai en terme de droit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    drwxrwxr-x. 2 root apache  4096 Apr 10 15:16 .
    drwxrwxrwx. 4 root apache  4096 Apr  3 15:49 ..
    -rwxrwxrwx. 1 root root     170 Apr 10 13:40 CLUSTER_1.txt
    -rwxrwxrwx. 1 root root   66553 Apr 10 11:21 ClusterFullList.txt
    -rwxrwxrwx. 1 root root     264 Apr 10 15:14 GNUGRAPH.sh
    -rwxrwxrwx. 1 root root     629 Apr 10 15:16 gnuplot_test.txt
    -rwxrwxrwx. 1 root root     444 Apr 10 15:14 Index.sh

    Déjà essayé de modifier mon Conten-Type, le résultat quand je clique sur bouton est une page noire avec écrit :

    The image "http://localhost/cgi-bin/GNUGRAPH.sh?buton=” cannot be displayed, because it contains errors

  6. #6
    Membre à l'essai
    Profil pro
    Futur administrateur systèmes
    Inscrit en
    décembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Futur administrateur systèmes

    Informations forums :
    Inscription : décembre 2010
    Messages : 34
    Points : 23
    Points
    23

    Par défaut

    Alors...

    Problème résolu en tapant la commande :


    Apparemment c'est SELinux qui me cassait les pieds sous RedHat... Je ne sais pas trop pourquoi.

    Cela dit, pas sûr que dans etc/selinux/config, passer SELinux en permissive au lieu d'enforcing soit une bonne chose.


    Pour mes tests je continuerai de faire un setenforce 0, mais je pense qu'en terme de sécurité, ce n'est peut être pas top.


    Si jamais vous avez une idée, je suis preneur !

Discussions similaires

  1. Problème accès ADO via appli CGI avec apache
    Par Le Lézard dans le forum Web & réseau
    Réponses: 0
    Dernier message: 12/11/2015, 12h44
  2. SOAP, CGI et Apache
    Par r0d dans le forum Services Web
    Réponses: 0
    Dernier message: 26/03/2010, 14h57
  3. [web] Apache Cgi-Bin
    Par Tommy Jean dans le forum Web
    Réponses: 8
    Dernier message: 23/08/2004, 18h46
  4. Réponses: 6
    Dernier message: 28/10/2002, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo