#1 Le 09/06/2015, à 08:09
- totola
[RÉSOLU] python: lancer une application X sur poste distant
Bonjour,
je fais un petit programme en python et j'aimerais qu'il puisse lancer une application graphique sur un poste distant. J'utilise le module fabric de python pour la connexion ssh. Voilà ma tentative de code:
### Lancer le module élève
def lancer_module_eleve(num_poste):
if self.couleur[num_poste] == 'forestgreen':
connecter_ssh(num_poste) #Se connecte au poste en utilisant le module fabric
run('export DISPLAY=":0" & sh /home/crif/Pyrecord.py/Pyrecord')
else:
print('poste {} non-connecté'.format(str(num_poste)))
def moduleEleve():
lancer_module_eleve(1)
lancer_module_eleve(2)
lancer_module_eleve(3)
lancer_module_eleve(4)
lancer_module_eleve(5)
lancer_module_eleve(6)
lancer_module_eleve(7)
lancer_module_eleve(8)
buttonMod = Tkinter.Button(self,text="module élève",command=moduleEleve)
buttonMod.place(x=663, y=20, anchor="c")
Mais j'obtiens une erreur:
[172.16.125.11] run: export DISPLAY=":0" & sh /home/crif/Pyrecord.py/Pyrecord
[172.16.125.11] out: sh: 0: Can't open /home/crif/Pyrecord.py/Pyrecord
[172.16.125.11] out:
Fatal error: run() received nonzero return code 127 while executing!
Requested: export DISPLAY=":0" & sh /home/crif/Pyrecord.py/Pyrecord
Executed: /bin/bash -l -c "export DISPLAY=\":0\" & sh /home/crif/Pyrecord.py/Pyrecord"
Aborting.
run() received nonzero return code 127 while executing!
Requested: export DISPLAY=":0" & sh /home/crif/Pyrecord.py/Pyrecord
Executed: /bin/bash -l -c "export DISPLAY=\":0\" & sh /home/crif/Pyrecord.py/Pyrecord"
Exception in thread Thread-7:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 504, in run
self.__target(*self.__args, **self.__kwargs)
File "PyPaFi4.py", line 337, in callbackcolor1
bouton1.configure(fg=self.couleur[1])
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1205, in configure
return self._configure('configure', cnf, kw)
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1196, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
RuntimeError: main thread is not in main loop
alors si je me connecte en ssh -X sur le poste et que je lance les commandes:
export DISPLAY=":0"
puis
sh /home/crif/Pyrecord.py/Pyrecord
le programme se lance correctement sur le poste distant...
Merci pour votre aide!
Modération : merci à l'avenir d'utiliser les balises code (explications ici).
Dernière modification par totola (Le 20/06/2016, à 20:48)
Hors ligne
#2 Le 20/06/2016, à 20:38
- totola
Re : [RÉSOLU] python: lancer une application X sur poste distant
Up... Un an plus tard je suis toujours confronté au même problème...
Dernière modification par totola (Le 20/06/2016, à 20:38)
Hors ligne
#3 Le 20/06/2016, à 20:47
- totola
Re : [RÉSOLU] python: lancer une application X sur poste distant
MDR je viens de trouver... Comme quoi parfois il faut juste laisser décanter les problèmes un an!!
C'était tout bête en plus juste une question de syntaxe dans la commande run:
run("DISPLAY=:0 sh /home/crif/Pyrecord.py/Pyrecord")
Hors ligne