Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/06/2015, à 09: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!
smile


Modération : merci à l'avenir d'utiliser les balises code (explications ici).

Dernière modification par totola (Le 20/06/2016, à 21:48)

Hors ligne

#2 Le 20/06/2016, à 21: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...  hmm

Dernière modification par totola (Le 20/06/2016, à 21:38)

Hors ligne

#3 Le 20/06/2016, à 21: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!! lol big_smile

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