Page 1 sur 1

Lancer .sh ou .py dans une fenetre de terminal

Posté : mer. 3 juil. 2019 12:12
par bahamutfr
Bonjour a tous,

je vous soumet mon soucis, je débute sous linux/raspbian comme beaucoup ici.

Actuellement je suis en train de me fabriquer une sorte de "HomeBox" qui a terme gerera , des sortie relais, un petit écran LCD, de la visio en streaming ,détection de mouvement etc...

Pour le moment le code avant gentillement mais je me retrouve toujours embêté par les même problèmes qui sont tous lié:

N°1 : Lorsque je lance mon script Python au démarrage grace a RC.local il ne s'ouvre pas dans un terminal.
j'ai trouvé une solution temporaire mais qui ne me convient qu'a moitié:

A la place de:
sudo python /var/www/html/gpio/marcobox.py

Je peux faire un :
sudo lxterminal -e python /var/www/html/gpio/marcobox.py

Mais cela ne me convient qu'a moitié car une fois le programme fini (ou planté! (lol)) la fenêtre de terminal se ferme...

encore pire quand j'appelle la commande via mon interface web PHP la commande
system("sudo python /var/www/html/gpio/marcobox.py"); fonctionne
system("sudo lxterminal -e python /var/www/html/gpio/marcobox.py"); ne fonctionne pas du tout


Ce qui m’ amène à mon problème n°2

N°2: Lorsque je lance un script python par l'interface graphique, il me demande avec quoi l’associer, je clique sur l'onglet "Lignes de Commandes Personalisée" puis tape "sudo python" en prenant bien soin de cocher "Exectuer dans un émulateur terminal" et "Garder la fenêtre terminal ouverte"

Sauf que rien n'y fais les fenêtre ne s'affichent meme pas mais le script s’exécute bien


Sinon dans l'ensemble ca fonctionne bien( je continue d'apprendre grace au kit Freenove vraiment sympa)


Merci!

Re: Lancer .sh ou .py dans une fenetre de terminal

Posté : sam. 24 août 2019 09:44
par cbalo
Bonjour,
Bon déjà je crois que tu peux oublier l'idée de lancer un programme qui interagit avec ton bureau dans une ligne de commande lancée dans une interface web.
Le service web interagit avec lui-même (serveur = localhost) via le monde console sans liaison avec le bureau.

Par contre, tu peux le lancer à partir d'un terminal et te créer un raccourcis pour ton bureau.

Déjà on peut se débarrasser du terme "python" de ta commande, si suffit de dire au système que ton fichier s'ouvre avec python
Pour ça, met en 1ère ligne de ton script :
#!/usr/bin/env python ou #!/usr/bin/python (si python est bien dans /usr/bin, pour le savoir, tapes dans un terminal whereis python)
Notes bien le dièse (#) et le point d'exclamation (!) et fait en sorte que le # soit le 1er caractère de la 1ère ligne de ton script python

As-tu le droit d'aller dans /var/www/html/gpio/ ?? et d'afficher le contenu du script ) : si tu est connecté avec ton user, tu peux faire cat /var/www/html/gpio/marcobox.py sans erreur ??)

Maintenant que le système saura avec quoi ouvrir ton script, on ne l'ouvrira plus, on l'exécuteras, pour sa, il faut que tu ais le droits de l'exécuter.
Qui en est le proprétaire ? toi ? pi ? ==> pour le savoir fait un ls -l /var/www/html/gpio/marcobox.py
Tu sauras qui en est le propriétaire, qui en est le groupe et quels sont les droits du :
propriétaire (1er paquet de rwx), du groupe (2ième paquet) et du reste du monde (le 3ième paquet)

Tu peux soit ajouter le droit d'exécution+lecture juste au propriétaire (sudo chmod u+rx /var/www/html/gpio/marcobox.py) ou à tous (sudo chmod a+rx /var/www/html/gpio/marcobox.py)
ou faire plus précis en utilisant la notation numérique de chmod (1er chiffre = proprio, 2ième = Groupe, 3ième = reste du monde, les chiffres sont des sommes de 0 : pas de droit, 1 : exécution ,
2 : écriture, 4 : lecture
ex : 777 tout le monde a tous les droits,
750 : proprio a tous les droits (1+2+4=7) groupe a lecture-écriture (4+1=5) et les autres rien (0)

Tu peux aussi en changer son propriétaire/ et ou groupe (sudo chown -c newproprio:newgroupe)

Et il faut s'assurer que ton script fait des choses auxquels toi (pi ?) as le droit de faire.

Là, tu pourras le lancer dans un terminal via ./marcobox.py si tu es déjà dans le dossier où il se trouve (note le point . devant le /)

Si tu arrives là, ta création de raccourcis sera simplissime à faire.

Sinon (si ton programme fait des choses réservées à root), il faudra faire autrement.