# Script bash CGI / piklab-prog

**URL:** <https://www.debian-fr.org/t/script-bash-cgi-piklab-prog/57520>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 2:46 UTC](https://www.debian-fr.org/t/script-bash-cgi-piklab-prog/57520 "2016-02-21T14:46:01Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![mathur1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f0a364/32.png) [@mathur1](https://www.debian-fr.org/u/mathur1)\
**Post date:** [Février 21, 2016, 2:46 UTC](https://www.debian-fr.org/t/script-bash-cgi-piklab-prog/57520/1 "2016-02-21T14:46:01Z")

</div>

Bonjour à tous,

Sous Debian Squeeze j’ai créé une petite interface pour programmer une carte à base de PIC18 (pour plus de convivialité en fait).  
L’interface est réalisée à partir de scripts CGI écrits en scripts Shell.

Problème: piklab-prog ne fonctionne pas depuis l’interface web avec l’utilisateur www-data (ps axu =\> www-data).  
Je sais que piklab-prog fonctionne puisque je peux programmer le PIC depuis le terminal «&nbsp;en manuel&nbsp;». Certes avec l’utilisateur «&nbsp;test&nbsp;» créé pour se logger sous Debian.  
L’utilisateur www-data fait partie du groupe microchip qui a tous les droits sur le device USB ICD2.  
J’ai créé un répertoire /home/www-data et j’ai modifié en conséquence le «&nbsp;home directory&nbsp;» dans /etc/password. Mais rien n’y fait.

Le log ci-dessous est retourné par piklab-prog lors de son appel:

```auto
trying to create local folder /.kde: Permission denied
trying to create local folder /.kde: Permission denied
piklab-prog(2128): Session bus not found 

KCrash: Application 'piklab-prog' crashing...
Warning: $HOME not set!
Unable to start Dr. Konqi
```

Version de piklab installée:

```auto
test@debian:~$ piklab-prog -v
Qt: 4.6.3
KDE Development Platform: 4.4.5 (KDE 4.4.5)
Piklab Programmer Utility: 0.16.2
```

Quelqu’un aurait-il déjà fait la même manip ?  
Ou bien le message éclaire-t-il un gourou de piklab ?

La solution est peut-être idiote mais je patauge depuis une bonne semaine. ![:119](https://www.debian-fr.org/uploads/default/original/1X/0287f377b0e103e172422ffbbe8c639fd3e12c9e.gif "vertige")  
Merci d’avance pour votre aide.

---

<div class="post-metadata">

**Author:** ![Ustilago](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/u/bcef8e/32.png) [@Ustilago](https://www.debian-fr.org/u/Ustilago)\
**Post date:** [Février 21, 2016, 2:46 UTC](https://www.debian-fr.org/t/script-bash-cgi-piklab-prog/57520/2 "2016-02-21T14:46:01Z")

</div>

Bonjour,

Je n’y connais rien, mais visiblement il ne trouve par le $HOME pour y créer un répertoire .kde.

Question bête : ton application marche depuis une vraie console (sans X) ? (ctrl+alt+F1 par exemple) Elle semble nécessiter des librairies kde/Qt.

Si oui, alors il faut que tu regardes comment gérer les variables d’environnement dans ton serveur web pour passer $HOME = /home/www-data ou équivalent, déjà pour voir.

Enfin, ce ne sont que quelques pistes, comme ça.

Usti

---

<div class="post-metadata">

**Author:** ![mathur1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f0a364/32.png) [@mathur1](https://www.debian-fr.org/u/mathur1)\
**Post date:** [Février 21, 2016, 2:46 UTC](https://www.debian-fr.org/t/script-bash-cgi-piklab-prog/57520/3 "2016-02-21T14:46:02Z")

</div>

Merci pour ces premières pistes.  
J’va y jeter un coup d’œil.

---

<div class="post-metadata">

**Author:** ![mathur1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f0a364/32.png) [@mathur1](https://www.debian-fr.org/u/mathur1)\
**Post date:** [Février 21, 2016, 2:46 UTC](https://www.debian-fr.org/t/script-bash-cgi-piklab-prog/57520/4 "2016-02-21T14:46:21Z")

</div>

A première vue, je rencontre le même message d’erreur dans la console.  
Cela donne l’impression que le script CGI sous apache s’exécute sans faire appel au serveur X11.

Curieux, curieux…

---

<div class="post-metadata">

**Author:** ![Ustilago](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/u/bcef8e/32.png) [@Ustilago](https://www.debian-fr.org/u/Ustilago)\
**Post date:** [Février 21, 2016, 2:46 UTC](https://www.debian-fr.org/t/script-bash-cgi-piklab-prog/57520/5 "2016-02-21T14:46:26Z")

</div>

[quote=«&nbsp;mathur1&nbsp;»]A première vue, je rencontre le même message d’erreur dans la console.  
Cela donne l’impression que le script CGI sous apache s’exécute sans faire appel au serveur X11.

Curieux, curieux…[/quote]  
Ah ? Moi j’aurais plutôt trouvé curieux qu’apache arrive à faire fonctionner un logiciel nécessitant X11 ![:033](https://www.debian-fr.org/uploads/default/original/1X/42cd8bd0447ecac24cdff1e26fa990a5c8442791.gif "petard")

Essaie de résoudre le problème en console, pour voir si la solution peut se transposer à un script cgi apache.

Usti

---

<div class="post-metadata">

**Author:** ![mathur1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f0a364/32.png) [@mathur1](https://www.debian-fr.org/u/mathur1)\
**Post date:** [Février 21, 2016, 2:50 UTC](https://www.debian-fr.org/t/script-bash-cgi-piklab-prog/57520/6 "2016-02-21T14:50:05Z")

</div>

Bon bah, j’ai bien l’impression que ce problème est insoluble.  
piklab-prog, bien qu’étant un programme en ligne de commande, veut absolument utiliser kde un minimum (ou qt).

Donc en gros, à part faire un gros script shell comme celui existant et «&nbsp;l’exécuter à la mimine&nbsp;», je ne sais pas comment faire. ![:think:](https://www.debian-fr.org/uploads/default/original/1X/98cae0704aea0201d04f151843e80a3ecd391eca.gif "Think")

Du coup cela rejoins ton point de vue sur l’exécution d’applis X11 sous Apache (logique en même temps).

Pfff, misère…

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 2:50 UTC](https://www.debian-fr.org/t/script-bash-cgi-piklab-prog/57520/7 "2016-02-21T14:50:10Z")

</div>

Insoluble qu’est ce donc que cela ?

Je ne connais pas se programme.Tu en fait quoi ? Tu le lance avec des argument qui changent ? Tu récupère sa sortie ?

Rien empêche de faire en sorte de faire communiquer www-data avec un autre utilisateur de la machine, mais l’IPC approprié dépend de la communication que tu cherche à avoir.

---

<div class="post-metadata">

**Author:** ![mathur1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f0a364/32.png) [@mathur1](https://www.debian-fr.org/u/mathur1)\
**Post date:** [Février 21, 2016, 2:50 UTC](https://www.debian-fr.org/t/script-bash-cgi-piklab-prog/57520/8 "2016-02-21T14:50:12Z")

</div>

Bonjour MisterFreez,

Moi j’ai dit insoluble ?? Roohhh 😊

Les arguments du programme restent les mêmes (aussi bien dans le script bash que le script cgi).  
Je récupère en effet le retour du programme avec les back-quotes ``

Le programme communique avec une sonde de programmation USB (ICD2). Cette sonde est accessible par les membres du groupe microchip créé pour l’occasion et qui contient les utilisateurs “test” et “www-data”.

Je ne connais pas trop le système des IPC.  
Quelle serait ton idée en fait ?

Ce que je souhaites faire c’est que le user www-data puisse appeler le programme comme le ferait l’utilisateur “test” dans un terminal gnome. Mais il semblerait que je me heurte au fait que, bien que le programme piklab-prog soit la version en ligne de commande du GUI piklab, piklab-prog nécessite d’être exécuté sous X11.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 2:50 UTC](https://www.debian-fr.org/t/script-bash-cgi-piklab-prog/57520/9 "2016-02-21T14:50:13Z")

</div>

> [@mathur1](#):
>
> Ce que je souhaites faire c’est que le user www-data puisse appeler le programme comme le ferait l’utilisateur «&nbsp;test&nbsp;» dans un terminal gnome. Mais il semblerait que je me heurte au fait que, bien que le programme piklab-prog soit la version en ligne de commande du GUI piklab, piklab-prog nécessite d’être exécuté sous X11.

Il y a deux solutions pour ça :  
[ul]  
[li]augmenter les privilèges de www-data pour qu’il puisse utiliser une session graphique, ce qui peut poser des problèmes de sécurité[/li]  
[li]faire communiquer ton script avec un autre programme lancé en tant que test, pour avoir une séparation des privilèges[/li][/ul]

Tu peut lancer piklab avec l’utilisateur test depuis un TTY de la machine ?

---

<div class="post-metadata">

**Author:** ![mathur1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f0a364/32.png) [@mathur1](https://www.debian-fr.org/u/mathur1)\
**Post date:** [Février 21, 2016, 2:50 UTC](https://www.debian-fr.org/t/script-bash-cgi-piklab-prog/57520/10 "2016-02-21T14:50:15Z")

</div>

La première solution (privilèges) me plairait assez. comme c’est pour un banc de test qui ne sera jamais connecté au réseau extérieur, il n’y a pas trop de risques pour la sécurité du système.  
Par contre j’ai effectué quelques petites recherches sur google et j’avoue ne pas trop trouver mon bonheur.

Aurais-tu un petit indice ? (pas forcément la solution, faut quand même que je justifie mon salaire 😉 )
