#1 Le 28/05/2021, à 17:58
- lomion
Lancer une commande à distance par ssh
Bonjour à tous,
Après des tonnes de recherches (sérieusement...) je me décide à poser la question sur ce forum.
Ce que je veux faire est assez simple (et pas spécifique à ubuntu, d'ailleurs). Mais je ne suis même pas sûr que ce soit possible.
Ou ça l'est et la réponse est tellement simple que j'irai me cacher dans un trou quand je la connaitrai :-)
Je suis connecté en ssh sur la machine B depuis une machine A.
Je voudrais pouvoir lancer des commandes depuis A qui s'exécuteraient sur B exactement comme si je les avais tapées dans la session ouverte au démarrage de B (B a un écran).
En d'autres termes, je veux pouvoir, par exemple, lancer startx sur B depuis ma connexion ssh sur A.
Et obtenir le lancement de l'environnement graphique sur l'écran de B, comme si j'avais tapé startx sur sa console que s'ouvre au démarrage.
J'espère que c'est suffisamment clair
Merci d'avance pour vos réponses,
Lomion
Hors ligne
#2 Le 28/05/2021, à 18:36
- Vobul
Re : Lancer une commande à distance par ssh
J'pense que si tu changes la variable d'environnement "DISPLAY" ça devrait fonctionner. Mais pourquoi ne pas plutôt configurer le desktop env pour qu'il démarre tout seul comme un grand après le boot ?
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
En ligne
#3 Le 28/05/2021, à 19:39
- soshy
Re : Lancer une commande à distance par ssh
Si ce que tu veux c'est l'interface graphique (complète) de B depuis ta machine A, il vaut mieux utiliser un truc style VNC ou XRDP.
Si tu veux juste un programme, tu peux utiliser l'option -X de ssh. Ca t'ouvrira juste la fenetre du logiciel de B sur ta machine A.
Si tu veux ouvrir sur l'interface de B un logiciel depuis la machine A (en étant connecté en ssh sur B), il faut lui donner la variable DISPLAY=:0
Exemple
DISPLAY=:0
ton_programme
Hors ligne
#4 Le 29/05/2021, à 00:29
- lomion
Re : Lancer une commande à distance par ssh
Merci à tous les deux pour vos réponses, mais je m'aperçois que j'ai mal posé ma question.
Plus simplement, je veux lancer une commande depuis la machine A, sur la machine B (sur laquelle je suis connecté en ssh).
Et toutes les sorties de la commande doivent s'afficher sur la machine B.
Lancer startx était un exemple. Je voudrais pouvoir le faire également avec n'importe quelle commande comme ls, par exemple.
Si je tape :
ssh user@machineB ls
Je voudrais que le résultat du ls s'affiche sur B. Alors que là, le ls montre bien le contenu du répertoire distant (B) mais s'affiche sur A...
Hors ligne
#5 Le 29/05/2021, à 01:39
- Watael
Re : Lancer une commande à distance par ssh
mais pourquoi ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#6 Le 29/05/2021, à 02:45
- Vobul
Re : Lancer une commande à distance par ssh
oui c'est chelou ton truc...
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
En ligne
#7 Le 29/05/2021, à 06:01
- pingouinux
Re : Lancer une commande à distance par ssh
Bonjour,
À lancer sur A après la connexion ssh sur B :
xterm -e "ls; read"
Sans le read, la fenêtre xterm se ferme immédiatement.
Tu peux aussi repérer le numéro d'un terminal sur B, et envoyer la sortie de la commande sur ce terminal :
Sur B
$ tty
/dev/pts/2
Sur A
ls >/dev/pts/2
Hors ligne
#8 Le 29/05/2021, à 10:46
- Sciensous
Re : Lancer une commande à distance par ssh
si c'est uniquement de la ligne de commande, tu as screen ou tmux (pour vobul )
(fonctionne un peu comme la proposition que pingouinux mais plus simple -à peine- )
Dernière modification par Sciensous (Le 29/05/2021, à 17:26)
antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )
Hors ligne
#9 Le 29/05/2021, à 12:10
- Vobul
Re : Lancer une commande à distance par ssh
@sciensous, tu veux dire tmux ? ;p
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
En ligne
#10 Le 29/05/2021, à 14:36
- lomion
Re : Lancer une commande à distance par ssh
Bon, je ne voulais pas renter dans les détails, mais je vais y être obligé pour satisfaire votre curiosité
Encore merci pour toutes vos réponses, mais ce n'est pas ce que je cherche à faire.
Je développe un petit script en Python qui doit tourner sur un Raspberry (ça, c'est un détail).
Sur ce Raspi est connecté un écran un peu spécial qui a une résolution de 1920 x 480 (ça, ce n'est pas un détail !). Très allongé, donc. Ce sont des écrans qui servent de tableau de bord sur certaines voitures.
Le script affiche des images, à des positions précises sur l'écran.
Pour des raisons évidentes de praticité, je développe sur un écran de résolution normale, mais je dois lancer le script sur le Raspi pour les tests.
Le script est sur le Raspi sur lequel je suis connecté en ssh.
Quand je veux tester le script, je dois lancer la commande "python3 mon_script.py".
Et si je fais ça en ssh, les images ne s'affichent pas sur l'écran du Raspi, mais sur mon PC (je ne sais pas trop comment, d'ailleurs...) ou parfois nulle part.
J'ai provisoirement résolu le problème en branchant un clavier sur le Raspi, mais ce n'est pas très pratique et je manque de place sur mon bureau.
Du coup, je me suis dit : et si je pouvais lancer la commande depuis ma connexion ssh, comme si elle avait été tapée sur la console du Raspi, ce serait l'idéal.
Un peu comme si je faisais du vnc, mais en mode texte...
Puis en faisant des recherches j'en suis venu à me poser la même question pour n'importe quelle commande, même "startx"...
Un point important : l'environnement graphique n'EST PAS lancé sur le Raspi.
Voilà ! Désolé pour le pavé, mais ça vous aidera surement à mieux comprendre mon problème :-)
Dernière modification par lomion (Le 29/05/2021, à 15:30)
Hors ligne
#11 Le 29/05/2021, à 15:38
- Watael
Re : Lancer une commande à distance par ssh
l'environnement graphique n'EST PAS lancé sur le Raspi.
comment fais-tu pour afficher des images sur le Rpi sans environnement graphique ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#12 Le 29/05/2021, à 15:43
- Vobul
Re : Lancer une commande à distance par ssh
l'environnement graphique n'EST PAS lancé sur le Raspi.
comment fais-tu pour afficher des images sur le Rpi sans environnement graphique ?
http://caca.zoy.org/wiki/libcaca ?
Sinon pour ton problème, vraiment c'est la variable DISPLAY qu'il faut adapter pour que ça s'affiche sur le bon écran. On en revient donc à ma première réponse ^^
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
En ligne
#13 Le 29/05/2021, à 15:49
- Watael
Re : Lancer une commande à distance par ssh
pas d'environnement graphique, pas de DISPLAY !
moi, je sais comment afficher des images en mode texte, je voudrais savoir quelle solution a adoptée lomion, ou si on marchait sur des nuages.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#14 Le 29/05/2021, à 21:55
- lomion
Re : Lancer une commande à distance par ssh
J'utilise pygame pour afficher mes images.
Je ne sais pas si c'est la meilleure solution, mais c'est la première sur laquelle je suis tombé et comme ça faisait ce que je voulais, je n'ai pas cherché autre chose.
Avec tout ça, je n'ai toujours pas de solution à mon problème :-)
N'y aurait-il pas un moyen, par exemple, d'envoyer du texte (ma commande) dans l'entrée clavier d'une autre console ?
Une sorte de redirection...
Hors ligne
#15 Le 29/05/2021, à 23:07
- Watael
Re : Lancer une commande à distance par ssh
désolé.
je ne vois pas comment faire. je vais suivre la discussion, en espérant y voir une solution.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#16 Le 30/05/2021, à 01:33
- Vobul
Re : Lancer une commande à distance par ssh
Il y a bien https://symless.com/synergy qui permet ça. Mais franchement avoir un second clavier qui lui est connecté au RPi me semble bien plus simple, car là au final c'est se prendre la tête car "mais ce n'est pas très pratique et je manque de place sur mon bureau.".
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
En ligne
#17 Le 30/05/2021, à 08:55
- soshy
Re : Lancer une commande à distance par ssh
Comment faire en détail, je ne sais pas. Mais dans la théorie, il faut que tu regardes comment passer par un framebuffer du raspberry.
J'ai vu des trucs sur internet du style
sudo python3 script.py > /dev/tty1
ou
sudo python3 script.py > /dev/fb1
Ce genre de chose. Sudo à l'air nécéssaire car il semble qu'il faille des permissions spéciales pour écrire directement les framebuffer.
Dernière modification par soshy (Le 30/05/2021, à 09:35)
Hors ligne
#18 Le 30/05/2021, à 09:41
- maxire
Re : Lancer une commande à distance par ssh
Salut,
Proposition de soshy valable, pour se passer de sudo ajouter l'utilisateur qui exécute le script python dans le groupe tty ce qui donnera un accés en mode écriture à tous les terminaux virtuels.
Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail
Hors ligne
#19 Le 30/05/2021, à 10:01
- maxire
Re : Lancer une commande à distance par ssh
Pour l'uitilsation de startx il suffit d'ajouter un identifiant serveur X quelconque pouir peu qu'il ne corresponde pas à celui d'un serveur X actif plus un numéro de terminal virtuel.
# startx /usr/bin/pluma -- :8 vt8
par exemple, celoa aurait d'alleurs très bien pu être vt2 ou vt60 au lieu de vt8.
Commande à passer en mode root.
Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail
Hors ligne
#20 Le 31/05/2021, à 15:16
- lomion
Re : Lancer une commande à distance par ssh
@soshy : merci ! C'est exactement ça :
sudo python3 script.py > /dev/tty1
Je me disais bien que la solution devrait ressembler à une redirection...
Le pire, c'est qu'il me semble avoir vu ça quelque part, mais je l'ai probablement mal tapé et suis passé à autre chose
@Vobul : oui, je connaissais synergy, mais ce n'est pas exactement ce que je cherchais. Et comme tu dis, c'est un peu compliqué pour cette situation.
@maxire : merci pour l'info sur le groupe tty.
Ta commande fonctionne aussi pour lancer une appli X, mais je n'ai pas réussi à trouver la signification du :8. Ca correspond à quoi ?
Merci à tous
Dernière modification par lomion (Le 31/05/2021, à 15:55)
Hors ligne