Forum Programmation.shell ececution de commande dans un shell distant

Posté par .
Tags : aucun
0
12
mai
2006
Bonjour,


En fait j'ai besoin d'executer des commandes shell sur un serveur distant ; pour cela j'utilise ssh

Le problème c'est que entre deux commandes je ne dois pas changer de contexte, donc il faut que je sois toujours dans la meme session de shell. Par exemple:
1ere commande: $> cd toto
2nd commande: $> ls
biensur les commandes envoyées ne sont pas aussi simples. Donc oublié le "ls toto/*"

en fait j'ai tenter d'ecrire dans une console distante en utilisant les "pts" mais je n'arrive pas a valider la commande (simuler la touche entrée)

Merci pour votre aide

PS: je ne peux faire de VNC, car je n'ai pas le droit d'installer de logiciel sur le serveur distant
  • # c quoi exactement le prolème ?

    Posté par . Évalué à 2.

    Une fois connecté en ssh sur le serveur, qu'est ce qui fait que tu changerais de contexte, moi y'en a pas comprendre.
  • # man ssh

    Posté par . Évalué à 1.

    ... et quand tu sais que tu peux écrire :
    1ere commande: $> cd toto; ls
    au lieu de :
    1ere commande: $> cd toto
    2nd commande: $> ls

    tu obtiens :

    $ ssh 127.0.0.1 'cd /bin; ls'

    Et si la commande est compliquée au point que tu en as fait un script, tu peux écrire :

    $ ssh me@somewhere "`cat toto`"
    • [^] # Re: man ssh

      Posté par . Évalué à 0.

      en fait les commandes ne sont pas definies a l'avance

      il peut y avoir plus ou moins de commandes, et les commandes peuvent changées.


      J'explique un peu mieux:

      L'idee est d'avoir un xterm ouvert sur le PC host. L'utilisateur tape les commandes qu'il veut:
      $> cd toto
      $> ls
      $> cd tata

      Pour chaque commande tapée je l'execute dans un xterm sur le serveur remote.
      En fait ça reviens a déporter un xterm du serveur vers le PC host. le truc c'est que pour chaque commandes tapées je dois l'executer et sur le PC host et sur le serveur.
  • # c quoi exactement le prolème ?

    Posté par . Évalué à 1.

    Une fois connecté en ssh sur le serveur, qu'est ce qui fait que tu changerais de contexte, moi y'en a pas comprendre.
  • # screen

    Posté par . Évalué à 0.

    as tu essayer avec "screen" ?

    http://linuxfr.org/tips/10.html
  • # netcat

    Posté par (page perso) . Évalué à 2.

    Avec le premier ssh, tu lances un netcat (ou un socat) sur la machine distante et hop, tu as un acces sur la machine distance avec redirection de terminal...

    Bref, d'après ce que j'ai compris de ton truc, j'irais voir de ce coté là.
    • [^] # Re: netcat

      Posté par . Évalué à 0.

      Merci de ta reponse en effet ça l'air pas mal ce que tu propose mais je n'arrive pas a utiliser netcat.

      As tu des exemples simple ?
      • [^] # Re: netcat

        Posté par . Évalué à 1.

        Merci,

        J'ai reussi a faire une sorte de telnet avec netcat:

        # Coté serveur
        $> netcat -l -p 5600 -e /bin/bash

        #Coté client
        $> echo "command a executer" | netcat serveur port


        Mon seul soucis c'est que le serveur s'arrete a chaque commande

        Comment faire pour que le serveur accepte plusieurs commandes les une a la suite des autres. Sachant que les commande seront envoyées en plusieurs fois
        • [^] # Re: netcat

          Posté par (page perso) . Évalué à 1.

          Pour que le netcat reste connecté entre deux sessions il faut que tu l'utilise en udp (en reception et donc en envois aussi).
          a la reception:
          $ nc -u -l -p 6666 localhost
          a l'envoi:
          $ nc -u localhost 6666 -w1
          En utilisant udp tu rencontrera un probleme pour quiter le nc car il restera tout le temps connecté.
          Dans ce cas il y a la possibilité d'utiliser l'option -w1 qui permet a netcat de se fermer apres une seconde sans activité.
          • [^] # Re: netcat

            Posté par . Évalué à 0.

            C'est genial !!!!
            Merci.


            Voila j'ai fait comme suis:

            Coté serveur:
            ------------------
            $> nc -u -l -p -e /bin/bash

            Coté client:
            ---------------
            $> echo | nc -u <serveur IP> -w1

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.