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

Entrée/Sortie Java Discussion :

telnet a partir d'une application java


Sujet :

Entrée/Sortie Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut telnet a partir d'une application java
    Salut,

    dans mon application java, j'ai besoin de faire un telnet sur un routeur cisco à partir de l'application, sachant que je travaille avec netbeans.
    est ce que jaurai besoin d'un package telnet? ou puis je le trouver?

  2. #2
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    a priori pas besoin.

    Un bon vieu Runtime.exec("prog");
    tu recupere le stream d'entée et tu lui balance les commande a la chaine
    "vaste programme"

  3. #3
    Membre régulier
    Profil pro
    Abcde
    Inscrit en
    Août 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Abcde
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2004
    Messages : 59
    Points : 79
    Points
    79

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    merci infiniment pour votre reponse, mais je sais pas encore comment resoudre mon probleme, j'ai pas bien compris votre reponse , j'ai besoin de plus d'explication SVP

  5. #5
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    En gros, tres gros meme : P
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //Ca commence comme ca
    Runtime rt = Runtime.getRuntime();
    //La dessus tu demande l'execution de telnet
    //Bon faudra ptet lui filer un login mot de passe... a voir
    //Tu recupere un handle sur le Process en cours
    Process appli = rt.exec( "c:\WinNT\system32\telnet" );
    //Sur ce process tu recupere un flux d'entrée par lequel tu va balancer les commandes
    InputStream fluxentree = appli.getInputStream();
     
    //Pour chaque commande tu envoie dans le flux
    for( String commande : List<String> lstCommandeAExecuter ){
       fluxEntre.write( commande );
    }
    voila en gros
    "vaste programme"

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    bonjour,

    1) merci beacoup pour votre aide, le probleme c que un InputStream n'admet pas la methode write()!!!

    2) j'ai besoin de faire le telnet sur un routeur dont l'acces demande un mot de passe, je comprends pas ou je dois spécifier l'adresse ip du routeur et le mot de passe!!!

    merci encore une fois

  7. #7
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Dans ton cas mieux vaut passer par ce qui est proposé par yopiyop:

    http://jakarta.apache.org/commons/net/

    et d'utiliser la classe TelnetClient

    Grosso modo tu procède de la façon suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    InetAdress address = InetAdress.getByName("<a href="http://www.google.com" target="_blank">http://www.google.com</a>");
    int port = 23;
    TelnetClient tc= new TelnetClient();
    tc.connect(address,port);
    et ensuite pour les opérations d'écriture tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    PrintWriter writer = new PrintWriter(tc.getOutputStream());
    writer.println("commande telnet");
    de même pour la lecture, enfin il est préférable qu'une opération régulière de lecture soit effectuée au moyen d'un thread afin de ne pas bloquer le thread principal (à moins qu'on ne le veuille bien sûr)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    char[] buff = new char[1024];
    InputStreamReader reader = new  InputStreamReader(tc.getOutputStream());
    StringBuffer sb = new StringBuffer();
    int nb = String writer.read("commande telnet");
    while(nb>=0) {
      sb.append(buff);
      nb = String writer.read("commande telnet");
    }
    String commande = sb.toString();
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut package org.apache.commons.net.telnet
    merci bien pour votre repose

    je me demande ou puis je trouver le package "org.apache.commons.net.telnet" pour le telecharger ?

    merci,

  9. #9
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Dans le jar de commons net quie tu pourras téléchager au premier lien cité dans mon application (lien dowload sur la partie gauche de la page)...
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  10. #10
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    maintenant, pour telneter sur mon routeur, je dois saisir un mot de passe..
    je sais pas ou est ce que je dois saisir le mot de passe dans mon application java?

    merci

  11. #11
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    je m'explique encore,

    si je fais telnet sur mon routeur, voila ce que je reçois comme resultat dans le reader

    User Access Verification
    Password
    :


    donc je sais pas comment faire entrer mon mot de passe??
    j'ai essayé de l'ecrire dans le writer, mais ça marche pas, j'arrive pas a telneter!!!

  12. #12
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Je cherche également à faire du telnet, et je me retrouve avec le même problème que mes prédécesseur, comment faire pour envoyer le login et le mot de passe.

    car pour l'instant, mon ébauche de code simplissime en est là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    		TelnetClient tc = new TelnetClient();
    		tc.connect("touque");
     
    		InputStream tcis = tc.getInputStream();
    		BufferedReader in = new BufferedReader(new InputStreamReader(tcis));
    		String l = null;
    		while ((l = in.readLine()) != null) {
    			System.out.println(l);
    		}
    et la console me renvoi :

    Red Hat Linux release 7.2 (Enigma)
    Kernel 2.4.24-smp on an i686
    Mais comment faire à partir de ce moment là pour envoyer le login et le password ???

    Car l'InputStream ne me renvoi pas la ligne "Login :" ou alors c'est que je ne l'ai pas vu O_O

    Merci beaucoup

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Voici le code complet pour ceux qui serait à la recherche d'une réponse :
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
    package com.informit.commons;
     
    import org.apache.commons.net.telnet.*;
    import java.io.*;
     
    public class TelnetSample
    {
      private TelnetClient telnet = new TelnetClient();
      private InputStream in;
      private PrintStream out;
      private char prompt = '$';
     
      public TelnetSample( String server, String user, String password ) {
       try {
    	 // Connect to the specified server
    	 telnet.connect( server, 23 );
     
    	 // Get input and output stream references
    	 in = telnet.getInputStream();
    	 out = new PrintStream( telnet.getOutputStream() );
     
    	 // Log the user on
    	 readUntil( "login: " );
    	 write( user );
    	 readUntil( "Password: " );
    	 write( password );
     
    	 // Advance to a prompt
    	 readUntil( prompt + " " );
       }
       catch( Exception e ) {
    	 e.printStackTrace();
       }
      }
     
      public void su( String password ) {
        try {
          write( "su" );
          readUntil( "Password: " );
          write( password );
          prompt = '#';
          readUntil( prompt + " " );
        }
        catch( Exception e ) {
          e.printStackTrace();
        }
      }
     
      public String readUntil( String pattern ) {
       try {
    	 char lastChar = pattern.charAt( pattern.length() - 1 );
    	 StringBuffer sb = new StringBuffer();
    	 boolean found = false;
    	 char ch = ( char )in.read();
    	 while( true ) {
    	  System.out.print( ch );
    	  sb.append( ch );
    	  if( ch == lastChar ) {
    	    if( sb.toString().endsWith( pattern ) ) {
    		 return sb.toString();
    	    }
    	  }
    	  ch = ( char )in.read();
    	 }
       }
       catch( Exception e ) {
    	 e.printStackTrace();
       }
       return null;
      }
     
      public void write( String value ) {
       try {
    	 out.println( value );
    	 out.flush();
    	 System.out.println( value );
       }
       catch( Exception e ) {
    	 e.printStackTrace();
       }
      }
     
      public String sendCommand( String command ) {
       try {
    	 write( command );
    	 return readUntil( prompt + " " );
       }
       catch( Exception e ) {
    	 e.printStackTrace();
       }
       return null;
      }
     
      public void disconnect() {
       try {
    	 telnet.disconnect();
       }
       catch( Exception e ) {
    	 e.printStackTrace();
       }
      }
     
      public static void main( String[] args ) {
       try {
    	 TelnetSample telnet = new TelnetSample( "192.168.1.99", 
                             "username", 
                             "password" );
    	 telnet.sendCommand( "cd /mydir/mysubdir" );
         telnet.su( "root-password" );
    	 telnet.sendCommand( "./restart.sh" );
    	 telnet.disconnect();
       }
       catch( Exception e ) {
    	 e.printStackTrace();
       }
      }
    }
    Vous trouverez d'autre information par rapport à la librairie common-net ici :
    http://www.informit.com/guides/conte...java&seqNum=40

    Bonne continuation à tout le monde !!

    moi ça marche du tonnerre

  14. #14
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Cameroun

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut demande d'aide
    slut a tous je suis nouvelle dans la prgrammation et mon projet est le mm cad configurer telnet en java ,je voudrais utiliser le code proposé plus haut mais je n'arrive pas à importer le package commons.net.apidocs.org.apache.commons.net.telnet.*
    merci d'avance

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

Discussions similaires

  1. [JavaService] Création d'un service a partir d'une application java en Jar)
    Par maxxper59 dans le forum EDI et Outils pour Java
    Réponses: 6
    Dernier message: 09/11/2010, 11h50
  2. Réponses: 1
    Dernier message: 27/11/2008, 17h47
  3. Réponses: 0
    Dernier message: 31/03/2008, 14h06
  4. Réponses: 1
    Dernier message: 02/02/2007, 11h29
  5. lire un fichier xml à partir d'une application java
    Par diamonds dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 23/01/2007, 19h23

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