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

Java Discussion :

comment recuperer le resultat d'une commande dos en java?


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 31
    Par défaut comment recuperer le resultat d'une commande dos en java?
    salut tout le monde
    ben mon objectif c'est de pouvoir recuperer le resultat d'une commande dos (exemple: ping, arp -a...) et d'extraire une partie de ce resultat que je l'ai fais rediriger vers un fichier texte et de mettre cette partie dans une valeure dont j'en aurrai besoin pour la comparer avec une autre valeur que je compte la recuperer a partir d'une base de donnees.
    ben voici le bout de code que je viens de tapper :

    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
    import java.io.*; 
    public class DosQuery {  
    public static void main(String[] args) { 
     
    String cmd; 
    cmd = "cmd /c ping localhost > trunks.txt "; 
     
    try { 
    Runtime r = Runtime.getRuntime(); 
    Process p = r.exec(cmd); 
     
    InputStream i_stream = p.getInputStream(); 
    InputStreamReader reader = new InputStreamReader(i_stream);  
     
    InputStream out = new BufferedInputStream(p.getInputStream());  
     
    String s =null; 
     
    BufferedReader bf_reader= new BufferedReader(reader);  
    while ((s = bf_reader.readLine()) != null) { 
    byte[] b = new byte[1024];  
    int n = out.read(b); 
    for(int i=0; i<n; i++)  
    System.out.print((char)b[i]); 
    } 
     
    p.waitFor();//si l'application doit attendre a ce que ce process fini 
     
    }catch(Exception e) { 
    System.out.println("erreur d'execution " + cmd + e.getMessage()); 
    } 
    }  
    }
    ce qu'il reste a faire alors c'est d'extraire une partie du resultat de ping qui a ete redirige vers le fichier "trunks.txt" et la mettre dans une variable.
    j'espere que ma demande est bien claire .
    Si vous avez une idee n'hesitez pas a m'aider.
    Merci

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Je comprends pas tout à ton code, c'est un peu le fouillis, par exemple, pourquoi tu récupères 2 fois l'inputStream dans des variables différentes ?

    Ensuite, pourquoi tu récupères pas le texte qu'il y a dans le fichier, ou alors pourquoi tu stockes dans un fichier... Je vois pas pourquoi tu fais les 2 en même temps

    En plus, dans ta boucle, tu stockes la ligne dans s, mais tu n'emploies plus du tout s...

    Je crois que tu as mélangé 2 facon de faire...

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 31
    Par défaut comment recuperer le resultat d'une commande dos en java?
    merci pour votre reponse
    oui vous avez raison.en fait je suis debutant en java,et comme je suis presse j'ai recherche un code et j'ai trouve celui que vous venez de critiquer
    svp si vous avez une autre facon de faire je serai rconnaissant
    merci bcp

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Je sais pas si ma technique est la meilleure, mais là voilà :

    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
    String cmd = "cmd /c ping 127.0.0.1"; 
     
    		try { 
    			Runtime r = Runtime.getRuntime(); 
    			Process p = r.exec(cmd); 
     
    			String s =null; 
     
    			BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 
     
    			StringBuffer buffer = new StringBuffer();
     
    			while ((s = reader.readLine()) != null) { 
    				 buffer.append(s);
    			} 
     
    			String result = buffer.toString();
     
    		}catch(Exception e) { 
    				System.out.println("erreur d'execution " + cmd + e.getMessage()); 
    		}
    Ensuite, si tu as besoin de récupérer une donnée en particulier, soit tu parses result, soit tu prends tes données directement dans la boucle

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 31
    Par défaut comment recuperer le resultat d'une commande dos en java?
    ok,merci bien pour ton aide,je vais essayer
    merci

  6. #6
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 31
    Par défaut comment recuperer le resultat d'une commande dos en java?
    Merciiiiii bien,ca a marche,voici ce que j'ai obtenu,lorsque j'ai execute la commande arp -a > krl.txt

    Interfaceÿ: 0.0.0.0 --- 0x2
    Adresse Internet Adresse physique Type
    157.55.85.12 f0-aa-00-62-c6-09 statique
    157.55.85.212 00-aa-00-62-c6-09 statique
    ce que je veux faire avec c'est lire l'adresse physique et la mettre dans une variable.
    pourriez vous m'y aider?j'en ai vraiment besoin
    merci bcp pour votre aide

  7. #7
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Ce que tu peut faire, c'est quelque chose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    boolean start  = false;
    ArrayList<String> physicalAddresses = new ArrayList<String>();
    while ((s = reader.readLine()) != null) { 
    <div style="margin-left:40px">if(start){
    <div style="margin-left:40px">physicalAddresses.add(s.split(" ")[1]);</div>}
     
    if(s.endsWith("Type")){
    <div style="margin-left:40px">start = true;</div>}</div>}
    Dis moi si tu comprends pas quelque chose et aussi si ca marche pas, car j'ai pas testé

  8. #8
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 31
    Par défaut comment recuperer le resultat d'une commande dos en java?
    merci pour ta reponse
    ben araylist n'est pa reconnue,faut il importer une classe??
    sinon,dis moi stp ,le code que tu viens de me filer sert a extraire l'adresse physique?ce que j'aimerai avoir c'est de copier, l'adresse physique contenue dans le fichier texte qui contient le resultat de la commande arp -a,dans une autre variable.
    excuse moi si je t'ai casse la tete par mes questions,je viens de commencer en java.
    merci pour ton aide

  9. #9
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import java.util.ArrayList;

  10. #10
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par trunks-tr
    merci pour ta reponse
    ben araylist n'est pa reconnue,faut il importer une classe??
    sinon,dis moi stp ,le code que tu viens de me filer sert a extraire l'adresse physique?ce que j'aimerai avoir c'est de copier, l'adresse physique contenue dans le fichier texte qui contient le resultat de la commande arp -a,dans une autre variable.
    excuse moi si je t'ai casse la tete par mes questions,je viens de commencer en java.
    merci pour ton aide
    Avec le code que je t'ai fourni plus haut, je ne stocke plus rien dans un fichier, j'extrais directements les données du flux. En fait je parcours chaque ligne et si la ligne finis par Type, ca veut dire que la ligne suivante est une ligne contenant une addresse physique et donc, je stocke cette addresse physique dans la liste.

  11. #11
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 31
    Par défaut
    j'ai toujours le meme probleme,meme apres avoir ajoute la ligne :import java.util.ArrayList;
    ArrayList n'est pas reconnue!!!!
    sinon est ce que tu pourrais faire une copier coller du code complet stp car lorsque tu 'avais file le deuxieme code je sais pas ce que je devrais effacer dans le premier code.
    merci

  12. #12
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    La compilation se fait avec quelle version du JDK?
    Supérieure à 1.2?

  13. #13
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par trunks-tr
    j'ai toujours le meme probleme,meme apres avoir ajoute la ligne :import java.util.ArrayList;
    ArrayList n'est pas reconnue!!!!
    sinon est ce que tu pourrais faire une copier coller du code complet stp car lorsque tu 'avais file le deuxieme code je sais pas ce que je devrais effacer dans le premier code.
    merci
    Tu ne dois rien effacer, il te faut remplacer la première boucle while par la seconde, et eventuellement effacer, le StringBuffer si tu n'as pas besoin du résultat complet.

  14. #14
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 31
    Par défaut
    je bosse avec jre 1.5.0_06,je sais pas prq cette methode n'est pas reconnue!!!

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

Discussions similaires

  1. Comment récupérer le résultat d'une requête dans un tableau ?
    Par Kylen dans le forum Accès aux données
    Réponses: 1
    Dernier message: 14/06/2006, 19h32
  2. Réponses: 2
    Dernier message: 27/02/2006, 15h59
  3. Comment insérer le résultat d'une commande avec vim
    Par zelda dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 28/12/2005, 09h32
  4. Réponses: 22
    Dernier message: 09/12/2005, 21h27
  5. Recuperer le resultat d'une commande
    Par vbcasimir dans le forum Linux
    Réponses: 2
    Dernier message: 08/12/2005, 10h11

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