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

Langage Java Discussion :

Récupération info d'un serveur telnet [Débutant(e)]


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Par défaut Récupération info d'un serveur telnet
    bonjour,
    je viens a vous de nouveau. j'ai codé un programme qui me connecte a un serveur via telnet, tel que celui-ci:
    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
     
    public class telnet {
     
        private TelnetClient telnet = new TelnetClient();
        private InputStream in;
        private PrintStream out;
        private String prompt ="#";
     
    public telnet(String server, String user, String password){
     
             try{  
                     //connexion au serveur 
                     telnet.connect(server,23);
     
                     // recuperation des infos
                             in = telnet.getInputStream();
                             out= new PrintStream(telnet.getOutputStream());
     
     
                     // log utilisateur
     
                             readUntil("login: ");
                             write(user);
     
                             readUntil("Password: ");
                             write(password);
     
                             write("utoken");
                             for(int i=0; i<10;i++){
                                  write("\n");
                             }
     
                             write("ls");
     
     
                             readUntil(prompt + "");
     
                             disconnect();
     
     
     
     
                     }catch(Exception ev){
                         ev.printStackTrace();
     
                 }
     
     
            }
    ici ma fonction ecriture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public void write(String value){
            try{
                out.println(value);
                out.flush();
                System.out.println(value);
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    fonction deconnection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void disconnect(){
     
            try{
                telnet.disconnect();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    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
    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.append(ch);
                        sb.append(ch);
                        System.out.println(" / ");
                        if(ch == lastChar){
                            if(sb.toString().endsWith(pattern)){
                                return sb.toString();
                            }
                        }
                        ch=(char) in.read();
     
                    }
     
                }catch(Exception e){
                    e.printStackTrace();
                }
     
                return null;
            }
    bon jusqu'ici tout fonctionne, là j'envoie mon login, password, et ma commande "utoken". cette derniere me renvoie tous les utilisateurs qui utilisent le serveur et leur activité.
    Mon probleme est que je voudrais récupérer ce flux d'info et les inscrire dans un texte pour les traiter. j'ai essayer plein de truc genre :
    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
     
     public void recuperer(){
     
              try{
                    InputStream is =telnet.getInputStream();
                    BufferedInputStream bis = new BufferedInputStream(is);
                    String s = File.separator;
                       File file= new File("D:"+ s +"local"+s+"er82467"+s+"Autre"+s+"server_response.rtf");
                       FileWriter fw = new FileWriter(file);
                       fw.write(bis.toString());
                       fw.close();
     
     
     
                }catch(Exception e){
                    e.printStackTrace();
                }
     
     
           }
    Que j'incorpore dans le public telnet().

    Bah jme doute que l'on va me ou , que ce que j'ai fait c'est du n'importe quoi et que sa marche pas ! j'ai tenté sans trop savoir où je mettais les pieds. mais bon faut bien expérimentez quand on sait pas !

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 104
    Par défaut
    Citation Envoyé par pharsales Voir le message
    Bah jme doute que l'on va me ou , que ce que j'ai fait c'est du n'importe quoi et que sa marche pas ! j'ai tenté sans trop savoir où je mettais les pieds. mais bon faut bien expérimentez quand on sait pas !
    Mais non mais non, sauf pour "Ca marche pas"

    Qu'est-ce qui ne marche pas dis moi ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Par défaut
    bah j'arrive a afficher la reponse du serveur sur ma console: la reponse est du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Standard input    EF82545 EXT-00438 EXT-00438 CAMPUS:POTRON (v2007.1115) (sogcv8/1700 1519), s
    Standard inputtart Tue 4/3 16:02, 77 licenses
    Standard input    EY82730 EXT-00018 EXT-00018 CAMPUS:POTRON (v2007.1115) (sogcv8/1700 1712), s
    Standard inputtart Tue 4/3 14:17, 77 licenses
    Standard input    et86622 SOGCV8 /dev/pts/9 CAMPUS:POTRON (v2006.0501) (sogcv8/1700 1113), sta
    Standard inputrt Tue 4/3 13:50, 77 licenses
    ce que je voudrais c'est l'inscrire dans un fichier txt pour pouvoir le traiter parce que comme ça, il y a des infos qui m'interesse pas et des caracteres " parasites" !

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Par défaut
    J'ai essayer de recuperer le flux d'entrée ( InputStream) pour l'inscrire dans un fichier texte avec un FileWriter mais sa marche pas . Pensant m'etre trompé de sens j'ai essayé avec le Outputstream sans plus de succés chais pas trop quoi faire!

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Je ne saisie pas ou se trouve le problème.
    Tu es parvenu à écrire les informations en sortie standard, donc tu as identifié le flux à utiliser pour la lecture. Me trompe-je ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Par défaut
    oui, j'inscris bien dans ma console, la reponse du serveur mais je n'arrive pas à l'inscrire dans un fichier texte.

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Par défaut
    bah j'ai trouvé une solution à mon probleme c'est pas tres propre mais sa marche la voici:
    je rajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CharArrayReader ar;
    CharArrayWriter caw= new CharArrayWriter();
    je modifie mon readUntil comme ceci:
    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
     
    public String readUntil4(String pattern){
     
                try{
    //                
                    char lastChar = pattern.charAt(pattern.length()-1);
                    StringBuffer sb = new StringBuffer();
                    boolean found = false;
                    boolean tps = true; // rejouter
                    char ch = (char) in.read();
                                    while(tps){ // j'ai mis tps à la place de true
                        System.out.append(ch);
                        sb.append(ch);
                         ////////////////////////////////////////////////////////// ce qui a été rajouter par rapport a l'ancien
                        caw.write(ch);  ////////////////////////////////////////////
                        caw.close();    ////////////////////////////////////////////
                       /////////////////////////////////////////////////////////////
     
     
                        if(ch == lastChar){
                            if(sb.toString().endsWith(pattern)){
    //                           write("utoken");
     
                               System.out.println("arret total");
                               tps= false;
                               // return sb.toString();
                            }
     
                        }
     
                        ch=(char) in.read();
                    }
     
                }catch(Exception e){
                    e.printStackTrace();
                }
     
                return null;
     
            }
    ensuite je crée une fonction ecriture:
    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
    public void ecriture(){
               try{
     
                   ar = new CharArrayReader(caw.toCharArray());
                int i;
                        String str="";
                        while((i=ar.read())!=-1){
                            str +=(char)i;
                        }
                        System.out.println("="+str);
     
                        String s = File.separator;
                        File file= new File("D:"+ s +"local"+s+"er82467"+s+"Autre"+s+"server_response.rtf");
                        FileWriter fw = new FileWriter(file);
                        fw.write(str);
                        fw.close();
     
                        }catch(IOException em){
                            em.printStackTrace();
                        }
    Que j'appelle aprés le readUntil dans ma fonction.
    Bah c'est un peu cochon sans manque de style mais it works !

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 24/05/2006, 18h28
  2. [RegEx] Récupération infos flux rss / atom via ereg()
    Par Fab le Fou dans le forum Langage
    Réponses: 3
    Dernier message: 28/03/2006, 15h26
  3. [Info] Application Client serveur
    Par Rocket dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 24/03/2006, 20h48
  4. [Info]Application client/Serveur utilisant JDBC
    Par freaky_boy dans le forum JDBC
    Réponses: 2
    Dernier message: 10/03/2006, 20h13
  5. [ SWT ] Récupération info d'un Browse
    Par geegee dans le forum SWT/JFace
    Réponses: 11
    Dernier message: 08/06/2004, 17h23

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