user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 20-12-2018 15:50:01

ZeR0-@bSoLu
Membre

Afficher le resultat d'un script sur l'hote distant SSH

Bonjour/bonsoir à tous ,
Bon comme le dit le titre , je cherche à faire la chose suivante :
Je me connecte en ssh à une de mes machines , sur cette machine (disont la machine B) j'aimerai faire en sorte de pouvoir lancer un script grace à ssh (jusque la rien de difficile) mais j'aimerai que le resultat de ce script (des echo de valeurs principalement) s'affiche sur un terminal sur la machine B et non sur ma machine à moi.

J'ai pas mal cherché sur le net avant de poster ici , en essayant de changer le DISPLAY etc etc.. mais rien n'y fais je n'y arrive pas !

P.S : j'ai déjà essayé 'ssh -X' egalement

Des idées les amis ?

Merci d'avance

Dernière modification par ZeR0-@bSoLu (20-12-2018 17:03:15)


Mess With The Bests
Die Like The Rest

Hors ligne

#2 20-12-2018 16:05:54

Linuz
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

En SSH directement je ne l'ai jamais fais.
Cependant tu peux regarder du côté de Fabric (librairie et outil en ligne de commande Python) qui te permet d'effectuer des commandes SSH à distance sur une ou plusieurs machines.
Du coup tu récupères le résultat de ta commande en python et tu fais ton traitement.

Ex de code qui ne sert à rien du tout à part montrer les fonctionnalités de base x) :

def UselessFunc():

    res = run('ls -l /home') # Execution d'une commande avec utilisateur
    res2 = sudo('chmod -R +x /home') # Execution d'une commande avec sudo

    if res.succeeded :
        print(res) 
    #end if

#end UselessFunc

Alors évidemmment ça fait beaucoup plus que ce que tu cherches à faire exactement. Tu peux administrer tout un parc avec ça  lol
C'est ce que j'avais utilisé dans mon ancienne boîte pour absolument tout automatiser.
Donc c'est probablement overkill  tongue

EDIT : Si je mets un lien pour fabric c'est mieux smile http://www.fabfile.org/

Dernière modification par Linuz (20-12-2018 16:14:14)

Hors ligne

#3 20-12-2018 16:14:11

ZeR0-@bSoLu
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

Merci pour la réponse je vais regarde ca , et ça pourrai me servir car bon je te cache pas que c'est dans un but administration que je veux faire ça ^^
Néanmoins si quelqu'un à la solution en SSH directement je prends

Dernière modification par ZeR0-@bSoLu (20-12-2018 16:16:12)


Mess With The Bests
Die Like The Rest

Hors ligne

#4 20-12-2018 16:17:26

Linuz
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

Hum Hum oublies Fabric j'ai mal compris ton soucis. Toujours bien lire avant de poster haha. Avec Fabric tes commandes ne s'afficheront pas sur la machine distante ^^'

Dernière modification par Linuz (20-12-2018 16:29:32)

Hors ligne

#5 20-12-2018 16:58:28

ZeR0-@bSoLu
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

Oui c'est ce que je viens de voir ^^' merci anyway smile


Mess With The Bests
Die Like The Rest

Hors ligne

#6 20-12-2018 16:58:47

petitegirafe
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

J'ai une idée , j'y connais pas grand chose alors je dis surement une bétise , pas taper s'il vous plait .....

Si tu renvoi tes commandes vers un fichier text specifique et que tu fais lire ce fichier dans un terminal sur la machine B avec tail

Hors ligne

#7 20-12-2018 17:00:48

ZeR0-@bSoLu
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

je n'ai pas testé mais il est fort probable que cela marche en effet mais j'aimerai justement savoir si cela est possible directement avec SSH smile
merci quand même de ta contribution girafe et c'est une bonne initiative de participer smile


Mess With The Bests
Die Like The Rest

Hors ligne

#8 20-12-2018 19:00:46

Linuz
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

J'ai un collègue qui m'a parlé d'un script écrit en C ttyecho que tu installerai sur ta machine B. En remplaçant tes echos dans ton script par ttyecho tu pourra rediriger le résultat vers 1 ou plusieurs terminaux.

Un lien : https://ananddrs.com/2013/09/25/send-co … terminals/

Dernière modification par Linuz (20-12-2018 19:02:20)

Hors ligne

#9 21-12-2018 12:24:47

ZeR0-@bSoLu
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

je vais étudier ca me parrait pas degueux tongue
merci
Mais si quelqu'un à la soluce en SSH je prends tongue


Mess With The Bests
Die Like The Rest

Hors ligne

#10 21-12-2018 12:38:58

Linuz
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

Je ne pense pas que ce soit vraiment faisable directement via SSH.
SSH ouvre déjà un terminal virtuel sur ta machine distante. Donc à moins de rediriger tes sorties sur un autre terminal je ne vois pas trop comment tu pourrais obtenir ce que tu souhaites tongue

Une deuxième solution serait d'utiliser screen pour envoyer des messages à tous les users qui l'utilisent https://www.linux.com/learn/using-scree … nteraction

Dernière modification par Linuz (21-12-2018 12:42:22)

Hors ligne

#11 22-12-2018 04:44:34

Archer
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

C'est techniquement très simple a faire. Le problème que tu va rencontrer par la suite sera purement logique... Mais pour commencer, la réponse à ta question : chaque instance de terminal sous Linux corresponds à un numéro de tty. On le récupère facilement avec la commande tty (qui l'aurai deviné ^^).
Avec Linux (et plus généralement UNIX), tout est fichier. Même ton tty. Il est situé dans /dev/pts. Quand on sait ça, un simple "here document" fait l'affaire wink
0uuaXxA.png
Sur l'image tu as un echo de A vers B, puis un cat de B vers A. Ca fonctionne en local comme en ssh. Maintenant le problème que tu va rencontrer c'est comment déterminer le/les numéro(s) du/des tty sur le(s)quel(s) tu va vouloir afficher le résultat de ton script.

Fun fact, pour bloquer un terminal, il suffit de faire cat /dev/pts/<son n° tty> et il se retrouve bloqué jusqu'à ce qu'on arrête le cat.

EDIT :
Par contre j'aimerai bien qu'on m'explique l'intéret du script ttyecho. On est d'accord que ça n'apporte rien par rapport au "here document" ? Je dirai même que c'est moins bon, parce qu'on ne peut pas filtrer le type de sortie que l'on veut renvoyer.

MaCommandeBashComplexe 1>/dev/pts/1 #envoyer uniquement les outputs du stdout
MaCommandeBashComplexe 2>/dev/pts/1 #envoyer uniquement les outputs du stderr

Dernière modification par Archer (22-12-2018 05:00:20)

Hors ligne

#12 26-12-2018 13:12:37

Linuz
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

Le problème c'est qu'avec la redirection tu n'écris pas vraiment dans le terminal au sens commande mais juste en visuel. La preuve quand tu injecte quelque chose il apparaît juste à l'endroit du curseur et tu es obligé de faire un "Entrée" pour récupérer une nouvelle ligne de prompt. Deux exemples :

  • Si tu es dans un VIM en mode commande et que tu injectes un ":q" avec un echo ":q" > /dev/pts/1 ton :q va se retrouver en haut de ton écran et tu ne vas rien pouvoir en faire.

  • Si tout simplement tu injects "ls" et que tu passes sur l'autre terminal faire Entrée, rien ne se passe


ttyecho permet de taper dans ton terminal dst comme si tu tapais toi-même dedans.
Si je fais un ttyecho -n /dev/pts/1 :q mon vim va bien se fermer. De cette façon tu peux soit juste print sur un autre pts soit carrément passer des commandes (et donc également rediriger les erreurs).

./ttyecho -n /dev/pts/1 "macommande 2> /dev/null"

Et dans son cas par exemple ZeR0-@bSoLu pourrait à la fin de son script lancer un htop qui serait ouvert sur son pts distant

Dernière modification par Linuz (26-12-2018 13:24:42)

Hors ligne

#13 26-12-2018 14:43:46

ZeR0-@bSoLu
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

Merci à vous deux pour les réponses j'essaye ça d'ici la fin des vacances de noël smile


Mess With The Bests
Die Like The Rest

Hors ligne

#14 26-12-2018 17:04:12

Archer
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

Hello,

Linuz a écrit :

Le problème c'est qu'avec la redirection tu n'écris pas vraiment dans le terminal au sens commande mais juste en visuel. La preuve quand tu injecte quelque chose il apparaît juste à l'endroit du curseur et tu es obligé de faire un "Entrée" pour récupérer une nouvelle ligne de prompt.

Je ne voyais pas ça comme un problème, étant donné que la demande était "j'aimerai que le resultat de ce script (des echo de valeurs principalement) s'affiche sur un terminal sur la machine B et non sur ma machine à moi.".
Mais oui effectivement je comprends mieux l’intérêt de ttyecho... Presque ^^"

Pour le retour d'exécution de commandes distantes je passerai plutôt par des Named Pipes. Tu as un exemple par là.
Effectivement ça ne permettrai pas de quitter VI depuis un autre terminal -ni d'afficher htop en mode interactif- mais je dirai presque tant mieux big_smile ça me semble dangereux.
Why you should use named pipes on Linux

Bonnes fêtes !

Hors ligne

#15 26-12-2018 17:15:51

Linuz
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

Hmmm intéressant je ne connaissais pas les named pipes. merci du tuyau  stone
Par contre avec les exemples données il est tout à fait possible de lancer un htop en intéractif avec les Named Pipes

Bonnes fêtes smile

Dernière modification par Linuz (26-12-2018 17:21:03)

Hors ligne

#16 26-12-2018 21:27:57

Azgarech
Crazy one

Re : Afficher le resultat d'un script sur l'hote distant SSH

Pour modifier un ficher on peut aussi utiliser vim avec scp (hors sujet).

vi scp root@server:/etc/passwd


Security is always excessive until it’s not enough. — Robbie Sinclair

Hors ligne

#17 27-12-2018 11:35:33

Archer
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

Linuz a écrit :

Hmmm intéressant je ne connaissais pas les named pipes. merci du tuyau
Par contre avec les exemples données il est tout à fait possible de lancer un htop en intéractif avec les Named Pipes

Mais de rien. No pun intended  big_smile
Pour htop je veux bien savoir comment tu ferai parce que ça m'intrigue. Pour moi le pipe va recevoir le résultat de la commande et l'afficher, mais rien d’interactif (pas d'évolution des processus, pas de contrôle souris, pas de kill, etc...). Pour l'évolution des process on pourrai imaginer une boucle qui renvoie un htop toutes les secondes, mais c'est tout. Je dirai que produire une interaction via le standard Linux (pipes / here document) est impossible parce que htop (comme VI(M) d'ailleurs) utilise ce qu'on appel le "redraw routines" pour construire et faire évoluer son interface.
Si je me trompe je serai ravi d'avoir un contre exemple  smile

Azgarech a écrit :

Pour modifier un ficher on peut aussi utiliser vim avec scp (hors sujet).
vi scp root@server:/etc/passwd

Tout aussi HS, ça marche également avec tar.

 tar -c -C ./mon/dossier/local | ssh archer@server.ch "sudo tar -x --no-same-owner -C /etc/pourquoipas"

gnulinux  stone

Dernière modification par Archer (27-12-2018 11:40:02)

Hors ligne

#18 27-12-2018 14:31:51

Linuz
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

De façon pas très propore à mon avis big_smile
T1 :

$ mkfifo mypipe
$ eval $(cat mypipe)

T2 :

$ echo "htop" > mypipe

Hors ligne

#19 27-12-2018 15:27:09

Archer
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

Yes c'est bien ce que je dis, avec ça tu aura le résultat de l'output du htop mais tu n'aura pas le rafraichissement, ni les interactions.
Je t'invites à tester les pipes pour voir les -grandes- possibilités et limites de la commande  wink

Hors ligne

#20 28-12-2018 14:41:27

ZeR0-@bSoLu
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

Justement ce qui m'intérèsserai ce serai de pouvoir afficher également HTOP sur la machine distante dans un terminal mais que il se rafaichisse bien


Mess With The Bests
Die Like The Rest

Hors ligne

#21 13-03-2019 17:47:41

ZeR0-@bSoLu
Membre

Re : Afficher le resultat d'un script sur l'hote distant SSH

Voici un retour , tardif mais still un retour , j'ai essayé pas mal de choses en essayant de tenir de compte de ce que vous avez dis , mais je n'y arrive pas il y a toujours un truc qui cloche , surement moi qui suis nul tongue
Ma solution sera donc netcat tongue


Mess With The Bests
Die Like The Rest

Hors ligne

Pied de page des forums