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

Linux Discussion :

Script pour les infos système


Sujet :

Linux

  1. #1
    Membre habitué Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Points : 133
    Points
    133
    Par défaut Script pour les infos système
    bonjour,
    voici ce que je voudrai faire:
    écrire un programme (langage?) ou scipt qui permet de récupérer des données système (cpu, ram, disque, ...) et renvoie le résultat formatté sous la forme suivante: "cpu=?;ram=?;..."
    ce programme ou script sera lancé par une machine distante qui se connecte sur le serveur (via ssh).
    des idées?
    merci
    "Ce qui ne nous tue pas nous rend plus fort"
    Nietzsche

  2. #2
    Membre confirmé
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Points : 497
    Points
    497
    Par défaut
    aucun probleme

    cpu tu peux piocher dans /proc/cpu*
    memoire tu peux prendre l'info retrournée par la commande free
    etc....

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh root@machine "cat /proc/cpu* && free -m && df -h " > fichier_a_analyser
    là bien sur c'est le strict minimum sans aucune mise en forme ....
    ensuite ton script analyse et mets en forme les infos du fichier dans un deuxieme...


    tu peux faire ça en pur shell script sans soucis.


    tout dépand de toi (des infos que tu veux de la mise en forme que tu veux etc....)

    aides toi des outils de bases pour la mise en forme
    grep tr sed echo etc.....etc....

    un exemple de ce que peu donner un appel de données dans le fichier_a_analyser
    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
    machine_test____>rsh mcpt "uname -a && vmstat && df -h"
    OSF1 mcpt V5.1 2650 alpha
    Virtual Memory Statistics: (pagesize = 8192)
      procs      memory        pages                            intr       cpu
      r   w   u  act free wire fault  cow zero react  pin pout  in  sy  cs us sy id
      3 233  36  81K  30K  14K   70M  19M  20M     3  15M    0  20  1K 245  3  4 93
    Filesystem                           Size        Used   Available Capacity  Mounted on
    root_domain#root                    1024M        168M        850M    17%    /
    /proc                                   0           0           0   100%    /proc
    usr_domain#usr                      4715M       1042M       3652M    23%    /usr
    var_domain#var                      1024M        123M        894M    13%    /var
    tmp_domain#tmp                      1953M        183M        832M    19%    /cluster/members/member0/tmp
    system_domain#home                  1000M         15M        985M     2%    /home
    system_domain#exploit               1000M       1941K        998M     1%    /exploit
    machine_test____>
    bon là c'est sur un unix proprio mais c'est kif kif sous linux à quelques trucs près.
    Comité de lutte contre le langage SMS sur les forums
    Veuillez écrire dans un langage compréhensible par les humains, merci.

  3. #3
    Membre habitué Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Points : 133
    Points
    133
    Par défaut
    en fait c'est quoi le répertoire proc?
    en plus quand j'éxécute la commande:
    il n'arrive pas à reconnaitre "cpu"
    "Ce qui ne nous tue pas nous rend plus fort"
    Nietzsche

  4. #4
    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
    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]

  5. #5
    Membre habitué Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Points : 133
    Points
    133
    Par défaut
    pareil...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bash: /proc/cpu: No such file or directory
    "Ce qui ne nous tue pas nous rend plus fort"
    Nietzsche

  6. #6
    Membre habitué Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Points : 133
    Points
    133
    Par défaut
    ok
    je vois maintenant...
    sous Linux il y a un répertoire proc/cpu mais par contre sous Unix il n'y a pas ça.
    je voudrai faire un truc générique qui marche sur les 2 en fait.
    est ce qu'il y a moyen de le faire??
    merci
    "Ce qui ne nous tue pas nous rend plus fort"
    Nietzsche

  7. #7
    zul
    zul est déconnecté
    Membre éclairé Avatar de zul
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 498
    Points : 699
    Points
    699
    Par défaut
    Sur quels systèmes doit tu recupérer ces informations ?

  8. #8
    Membre habitué Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Points : 133
    Points
    133
    Par défaut
    en fait je doit faire du monitoring d'un certain nombre de serveurs (UNIX/LINUX).
    je développe une console(sur une machine distante) qui permet d'afficher différents indicateurs (dont ceux qui concernent l'utilisation du cpu/process, la ram...) de ces serveurs.
    cette console est développée en java et elle se connecte sur le serveur via ssh, bon cette partie n'est pas mon souci pour l'instant.
    mon souci est comment récupérer ces différentes informations?
    - dois je écrire un script shell? comment?
    - dois-je écrire un programme en C ou autres par exemple que j'installe sur le serveur et c'est lui qui récupere les infos et les formatte?

    l'essentiel est qu'à la sortie j'ai un résultat sous le format "cpu=?;ram=?;..." pour chaque process...
    voilà
    "Ce qui ne nous tue pas nous rend plus fort"
    Nietzsche

  9. #9
    Membre confirmé
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Points : 497
    Points
    497
    Par défaut
    le plus simple sera un script shell mais comme tout le monde te le dis depuis le debut du topic, ca depand de ce que tu veux faire precisement et sur quoi


    script & methode :
    par exemple pour que des machines linux et que la ram et que le CPU :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i in machine machine_a machine_b ; do 
    CPU=`ssh root@$i "grep -i modele /proc/cpuinfo | cut -d= -f2"`
    RAM=`ssh root@$i "free -m | grep Mem | awk '{print $2}'`
    echo "Machine : $i CPU = $CPU \c RAM= $RAM" >>  fichier.log
    done
    apres a toi d'adapter a tes besoins..

    concretement voila comment ca va donner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    operator@linux:/t/snes/snes9x-1.39.orig> for i in multimediastation ; do CPU=`grep -i "model name" /proc/cpuinfo | cut -d : -f2 `; echo "Machine : $i CPU=$CPU"; done
     
    Machine : multimediastation CPU= Pentium III (Katmai)
    Comité de lutte contre le langage SMS sur les forums
    Veuillez écrire dans un langage compréhensible par les humains, merci.

  10. #10
    Membre habitué Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Points : 133
    Points
    133
    Par défaut
    merci pour la réponse mais en fait voilà ce que je cherche est donné par la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/ucb/ps -auxwww > processes.log
    maintenant il ne reste qu'à piocher et filtere ça car c'est un peu le bordel...
    "Ce qui ne nous tue pas nous rend plus fort"
    Nietzsche

  11. #11
    Membre habitué Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Points : 133
    Points
    133
    Par défaut
    avec la commande citée précédamment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/ucb/ps -auxwww > processes.log
    j'obtient par ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    USER       PID %CPU %MEM   SZ  RSS TT       S    START  TIME COMMAND
    root       427  0.0  0.1 3808 1544 ?        S   Mar 28  0:00 /usr/local/sbin/sshd
    aworks2x   539  0.0  0.2 6056 3752 ?        S   Mar 28  0:00 awservices
    root      1007  0.0  0.1 2376 1816 ?        S   Mar 28  0:00 rpc.metad
    bzfhomt2  1231  0.0  4.817313695952 ?        S 06:05:26  1:00 /usr/local/j2re1.4.2_06//bin/java
    bon je n'ai pas tout mis car c'est trop long...
    est ce qu'il y a un moyen de faire du filtrage sur les users? de telle façon de lui demander d'afficher que les process qui ne sont pas lancés par root?
    "Ce qui ne nous tue pas nous rend plus fort"
    Nietzsche

  12. #12
    zul
    zul est déconnecté
    Membre éclairé Avatar de zul
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 498
    Points : 699
    Points
    699
    Par défaut
    Tu peux utiliser deux approches :
    soit tu utilise grep ( grep -v root )
    soit tu lis le man de ps de cette machine, et tu regarde en particulier les options -u / -U ...

    Ce genre d'information risque d'etre difficile a recuperer avec un unique script, chaque système a un moyen différent de representer ces données. Sur certains comme linux, tu pourra utiliser /proc comme indiqué dessus ( voir /sys ). Sur d'autre, il faut passer par la commande sysctl ... Sur d'autres, encore autre chose.

  13. #13
    Membre habitué Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Points : 133
    Points
    133
    Par défaut
    ok, meci pour ta réponse
    je voudrais faire un truc un peu général qui marche à peu près sur tous les systemes LINUX/UNIX...
    je vais voir l'option -u car le grep risque de faire des conneries s'il y a le mot "root" dans un nom de répertoire par ex...
    "Ce qui ne nous tue pas nous rend plus fort"
    Nietzsche

  14. #14
    Membre habitué Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Points : 133
    Points
    133
    Par défaut
    bizarre... je ne peux pas mettre d'argument avec l'option -u
    "Ce qui ne nous tue pas nous rend plus fort"
    Nietzsche

  15. #15
    Membre habitué Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Points : 133
    Points
    133
    Par défaut
    je suis désolé, je vais encore vous embeter
    j'ai un résultat de cette forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    USER       PID %CPU %MEM   SZ  RSS TT       S    START  TIME COMMAND
    root       427  0.0  0.1 3808 1544 ?        S   Mar 28  0:00 /usr/local/sbin/sshd
    aworks2x   539  0.0  0.2 6056 3752 ?        S   Mar 28  0:00 awservices
    root      1007  0.0  0.1 2376 1816 ?        S   Mar 28  0:00 rpc.metad
    bzfhomt2  1231  0.0  4.817313695952 ?        S 06:05:26  1:00 /usr/local/j2re1.4.2_06//bin/java
    comment est ce que je fait pour obtenir le résultat suivant sur la sortie standard par exemple pour le premier process:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "pid=427;cpu=0.0;mem=0.1"
    merci
    "Ce qui ne nous tue pas nous rend plus fort"
    Nietzsche

Discussions similaires

  1. [Batch] Script pour les clés de registre
    Par Lud0o dans le forum Scripts/Batch
    Réponses: 18
    Dernier message: 08/02/2012, 12h36
  2. Script pour les permissions
    Par mattmax dans le forum Débuter
    Réponses: 2
    Dernier message: 19/05/2011, 16h58
  3. Exécuter un script pour les autres créé par Root
    Par raffa dans le forum Administration système
    Réponses: 2
    Dernier message: 08/06/2009, 21h39
  4. script pour les profil itinerant?
    Par delphino7 dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 31/03/2008, 13h48

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