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

C++ Discussion :

programme C++ avec shell


Sujet :

C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 17
    Points : 7
    Points
    7
    Par défaut programme C++ avec shell
    Bonjour à tous,
    J'ai un petit souci:

    Voilà, je dois écrire un client en C++ et ce client est un agent qui sera installé sur des machines pour récupérer des infos statiques et variables de la machine:

    - infos statiques: (nom de la machine, adresse Ip, DNS, processeur(nbre, types)
    - infos variables (mémoire utilisée, libre, %CPU utilisé....)

    J'ai pensé écrire des shell qui j'intégrerai dans mon programme C++. Mais je ne sais pas comment exécuter un shell à partir d'un prog C++.

    Qqn peut il m'aider?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut Re: programme C++ avec shell
    Citation Envoyé par I_believe_I_can_fly
    Bonjour à tous,
    J'ai un petit souci:

    Voilà, je dois écrire un client en C++ et ce client est un agent qui sera installé sur des machines pour récupérer des infos statiques et variables de la machine:

    - infos statiques: (nom de la machine, adresse Ip, DNS, processeur(nbre, types)
    - infos variables (mémoire utilisée, libre, %CPU utilisé....)

    J'ai pensé écrire des shell qui j'intégrerai dans mon programme C++. Mais je ne sais pas comment exécuter un shell à partir d'un prog C++.

    Qqn peut il m'aider?

    Merci d'avance
    Executer un shell ou une commande shell, pour une commande shell tu peux via la fonction
    par exemple

    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Bonjour Skyrunner,
    Merci d'avoir répondu à ma question.

    J'ai encore un autre souci.
    Je veux par exemple récupérer le nom de la machine :
    J'écris dans mon programme .
    Le pb c'est qu'il m'affiche le résultat sur la console. Moi j'aimerais bien récupérer le résultat dans une variable de mon programme. Comment puis je faire?

    Merci d'avance.

  4. #4
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Si tu veux utiliser cette solution :

    Il te faudra créer un pipe et rediriger la sortie de system("Cmd") sur ce pipe.

    Autre solution: Ajouter des arguments de retour à test Script et les passer dans system.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system("Cmd Arg1 Arg2");
    Je n'ai pas testé mais je pense que ça peut marcher.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Points : 473
    Points
    473
    Par défaut
    Je pense qu'un solution beaucoup plus simple à mettre en oeuvre est d'utiliser des fichiers
    temporaires.
    Chaque scripte est appelé avec un nom de fichier en paramètre. Le programme principal
    se charge ensuite de charger les fichiers et d'interpreter les résultats.

  6. #6
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    J'ai écrit mon programme comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system(hostname > fichier)
    Le nom de la machine m'est retourné dans le fichier de nom "fichier".
    Ensuite je lis dans ce fichier pour récupérer le résultat.
    Mais ce traitement me semble un peu long.

    Y aurait il pas une fonction en C ou en C++ qui permet de récupérer:
    - Le nom d'une machine
    - son adresse dns
    - le nom du serveur dns/.....

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    cherhce du coté de gethostname() et gethostbyname()...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    J'ai encore besoin de votre aide.
    J'ai trouvé la solution pour récupérer le nom de la machine ainsi que l'adresse IP.
    Il me faut maintenant une fonction qui permet de récupérer:
    - l'adresse DNS
    - la vitesse des processeurs de la machine.

    Ou pouvez vous me dire les fonctions qui permettent d'accéder au fichier /proc/cpuinfo

    Je vous remercie de votre aide.

  9. #9
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Je pense qu'un fopen avec quelques options doit être suffisant.

    C'est sans garanti, mais essai quand même. Après tout c'est un fichier spécial, rien de plus.

  10. #10
    Membre habitué Avatar de nicolas66
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 326
    Points : 146
    Points
    146
    Par défaut
    Si t'es sous linux ya ptet quelques infos qui peuvent t'intéresser dans le fichier '/proc/cpuinfo'. Bon courage je dois aller en cours
    Athlon 6000+ Dual Core & GeForce 8600 GT -- Ubuntu Gutsy

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 177
    Points : 196
    Points
    196
    Par défaut
    dans le code de quake3 il y a ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // sysconf() in libc, POSIX.1 compliant
    unsigned int Sys_ProcessorCount()
    {
      return sysconf(_SC_NPROCESSORS_ONLN);
    }

    un peu d'aide sur sysconf :
    http://ou800doc.caldera.com/en/man/h...ysconf.3C.html

    Sinon Sysinfo a l'air terrible aussi ^^
    http://ou800doc.caldera.com/en/man/h...sysinfo.2.html

  12. #12
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     un peu d'aide sur sysconf :
    http://ou800doc.caldera.com/en/man/html.3C/sysconf.3C.html
     
    Sinon Sysinfo a l'air terrible aussi ^^
    http://ou800doc.caldera.com/en/man/html.2/sysinfo.2.html
    Merci pour les liens.

    En fait j'utilise une version Debian. Et çà la librairie systeminfo.h n'existe pas.
    Comment puis je faire?

    Merci d'avance

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/01/2010, 09h32
  2. Comment fermer un programme ouvert avec la fonction Shell
    Par nicolas2603 dans le forum VBA Access
    Réponses: 13
    Dernier message: 08/02/2008, 20h01
  3. Réponses: 11
    Dernier message: 26/04/2007, 16h34
  4. Programmation crontab avec script shell
    Par burhud dans le forum Linux
    Réponses: 3
    Dernier message: 05/12/2006, 14h46
  5. Programmation WEB avec delphi
    Par mayoguy dans le forum Web & réseau
    Réponses: 4
    Dernier message: 20/08/2002, 19h03

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