IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Exécuter une commande Linux sur un serveur dans un réseau


Sujet :

Développement Web en Java

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Exécuter une commande Linux sur un serveur dans un réseau
    Bonjour tout le monde,

    Je suis un debutant java et je voudrais faire un programme qui va me permettre de lancer des commades (cat, ls, cd, more, ...) LINUX sur un serveur à distance mais je ne trouve pas une bonne idée.
    celle que j'ai c'est avec la class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    import java.io.*;
    import java.net.*;
     
    class SocketClient
    {
      Socket sock;
      byte []server = new byte[] {(byte)127,(byte)0,(byte)10,(byte)11};
      int port = 22;
      String filename = "/etc/hosts";
      String command = "cat " + filename + "\n";
     
      public static void main(String[] args)
      {
        new SocketClient();
      }
     
      public SocketClient()
      {
        openSocket();
        try
        {
          // write to socket
          BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
          wr.write(command);
          wr.flush();
     
          // read from socket
          BufferedReader rd = new BufferedReader(new InputStreamReader(sock.getInputStream()));
          String str;
          while ((str = rd.readLine()) != null)
          {
            System.out.println(str);
          }
          rd.close();
        }
        catch (IOException e)
        {
          System.err.println(e);
        }
      }
     
      private void openSocket()
      {
        // open a socket and connect with a timeout limit
        try
        {
          InetAddress addr = InetAddress.getByAddress(server);
          SocketAddress sockaddr = new InetSocketAddress(addr, port);
          sock = new Socket();
     
          // this method will block for the defined number of milliseconds
          int timeout = 2000;
          sock.connect(sockaddr, timeout);
        }
        catch (UnknownHostException e)
        {
          e.printStackTrace();
        }
        catch (SocketTimeoutException e)
        {
          e.printStackTrace();
        }
        catch (IOException e)
        {
          e.printStackTrace();
        }
      }
    }
    Mais ce code me ranvoie à tous les coup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    run:
    SSH-1.99-OpenSSH_3.9p1
    Protocol mismatch.
    BUILD SUCCESSFUL (total time: 0 seconds)
    Pourriez vous s'il vous plait m'en donner quelque une?

    Cordialement,
    SALL

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Points : 29
    Points
    29
    Par défaut
    Encore heureux que ça ne marche pas...sinon ça voudrait dire que n'importe qui peut faire n'importe quoi sur n'importe quel serveur dont il connaitrait l'adresse.

    Pour exécuter des commandes à distance sur un serveur UNIX, on utilise des protocoles comme Telnet (l'ancien, port 23) ou SSH (le nouveau, port 22) qui se situent au dessus de TCP et UDP dans le modèle OSI.

    Pour l'utiliser dans une appli Java il faut une bibliothèque qui implémente ce protocole, exemple : http://javassh.org.

    Ce que fait ton code c'est simplement ouvrir un socket sur le port 22 et envoyer une commande. Le serveur te fait un doigt car il s'attend à ce que tu lui parles en SSH.

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci pour le tuyo. Sa m'a fait comprendre ce que je voulais faire et ce que je doit faire.

    En cherchant j'ai trouver aussi:
    http://www.developpez.net/forums/d41...ient-ssh-java/

    Cordialement.
    Major

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 28/04/2009, 09h20
  2. Exécuter une commande linux dans X threads en parallèle
    Par sanchou dans le forum Général Java
    Réponses: 8
    Dernier message: 23/04/2008, 14h02
  3. Exécution d'une commande Linux sur Windows !
    Par ghohm dans le forum Administration système
    Réponses: 2
    Dernier message: 05/03/2008, 23h29
  4. Réponses: 1
    Dernier message: 21/08/2007, 18h02
  5. Exécuter une commande linux.
    Par casafa dans le forum Linux
    Réponses: 4
    Dernier message: 20/07/2005, 23h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo