Voici mon problème, j’ai un script python sur un raspberry distant, script ponctué de print. Exécuter en local le script fonctionne normalement.
Je me connecte d’un autre poste via le terminal de debian en ssh et ça marche toujours très bien.
Par contre je crés un script pour automatiser la connections ssh dans une nouvelle fenêtre de terminal, je rentre mon mots de passe, mon script ce lance bien, mais dans cette nouvelle fenêtre je n’ai pas les retour de print…
Alors que quand je lance ce même script toujours via ssh mais dans une fenêtre terminal que j’ai ouverte a la main, pas de problème…
Ce n’est pas d’une clarté limpide votre histoire. Vous utilisez le terme script pour deux choses très différentes et sans le contenu de ces fameux scripts il est quasiment impossible de comprendre ce qui se passe. En particulier celui qui crée la connexion ssh
Envoyer le test.py via scp n’affiche pas les retours de print non plus. J’ai besoin que ce soit envoyé dans une autre fenètre de terminal, à terme se sera plusieurs connexions ssh qui seront établie et j tiens à voir les retours.
Pour infos l’entête de mon fichier python sur la machine distante est:
#!/usr/bin/python
Pour plus de précision à nouveau, en local, j’ouvre un terminal, je me connecte en ssh à la machine distante, le lance mon test.py… Je vois bien mes retours print.
Par contre mon scirpt du dessus qui fait pour moi la même chose mais automatisé et dans un nouveau terminal, je ne vois pas les prints…
Pourquoi ne pas utiliser un screen pour ça, tu n’aurait qu’a te rattacher à ton screen pour consulter tes prints.
Le mieux serait tout de même d’envoyer tes print dans la stdout, mais si tu lance plusieurs scripts simultanément ça va être le bordel pour trier tes sorties
Non et non ! le script bash ne fait pas la même chose que ce que vous faites à la main.
Comme vous combinez des commandes qui lancent une autre commande
ssh <user@>host cmmande…
lxterminal -e commande;;;
l’ordre dans lequel vous combinez est très important
et vous voyez que j’ai été obligé d’ajouter un raw_input pour bloquer la fermeture intempestive de la fenêtre graphique. C’est une solution bâtarde car elle suppose que vous avez un émulateur de terminal sur la machine distante.
Comme l’a remarqué très justement @Clochette il est beaucoup plus judicieux d’utiliser un multiplexeur de terminal texte (programme screen ou tmux).
Si c’est le raspberry qui tourne H24, il est plus simple d’installer tmux sur ce système, vous pourrez retrouvez vos sessions de la manière suivante
ssh user@pi
# retrouver le numéro de la session éventuelle
tmux list-sessions
tmux # si pas de session trouvée
tmux attach-session -t <num> # sinon
....
# terminé : on détache (tous les onglets d'un coup )
<prefix> d # prefix : Ctrl B par défaut
# on se retrouve dans le shell de connexion sur le pi
exit # on ferme la connexion ssh
Les sessions tmux sont persistantes et si votre serveur n’est pas redémarré souvent, vous pouvez retrouver ce que vous avez fait il y a un ou plusieurs mois
Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة
F. Petitjean
Ingénieur civil du Génie Maritime.
« L’arbre tombe toujours du côté où il penche. »
Proverbe français
Non et non ! le script bash ne fait pas la même chose que ce que vous faites à la main.
Je le soupçonne bien sinon je n’aurais pas de problème…
raw_input(« press any key »)
oui effectivement c’est un problème.
La proposition de clochette avec screen m’interresé bien. Hier soir j’ai installé screen pour essaie. J’ai créé plusieurs screen et rencontré des difficultés lorsque je voulais tous les afficher dans un terminal scindé. Pas moyen de ce rattaché a certain mais pas a d’autre…
Je n’ai pas chercher très loin… désinstallé…