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

Unix Discussion :

Formatage d'un DF


Sujet :

Unix

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Points : 92
    Points
    92
    Par défaut Formatage d'un DF
    Bonjour à tous,

    un petit souci que je n'arrive pas a trouver et pourtant ce n'est pas faute de chercher, alors je viens voir la communauté.

    J'aspire faire une sortie d'un "df -m" formaté sur n'importe qu'elle unix ayant la commande aclget soit AIX principalement (nota je ne connais pas la commande sous linux) :

    Voici mon shell, et j'ai une boucle qui tourne 3 fois sans savoir pourquoi !!!

    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
     
    root@Mon_SRV : /root/bin # cat DF
    #!/usr/bin/sh
    VAR1=$(for FS in $(df -Mm | awk '{print $1}') ; do echo $FS | wc -c ; done > $$ ; sort -rn $$ | head -1 ; rm -f $$)
    VAR2=$(for FS in $(df -Mm | awk '{print $2}') ; do echo $FS | wc -c ; done > $$ ; sort -rn $$ | head -1 ; rm -f $$)
    VAR3=$(for FS in $(df -Mm | awk '{print $3}') ; do echo $FS | wc -c ; done > $$ ; sort -rn $$ | head -1 ; rm -f $$)
    VAR4=$(for FS in $(df -Mm | awk '{print $4}') ; do echo $FS | wc -c ; done > $$ ; sort -rn $$ | head -1 ; rm -f $$)
    VAR5=$(for FS in $(df -Mm | awk '{print $5}') ; do echo $FS | wc -c ; done > $$ ; sort -rn $$ | head -1 ; rm -f $$)
    VAR6=$(for FS in $(df -Mm | grep -vE "%Iused|proc" | awk '{print $2}') ; do aclget -v $FS | grep owner | sed s'/(/ /g' | sed s'/)/ /g' | awk '{print $2}' | wc -c ; done > $$ ; sort -rn $$ | head -1 ; rm -f $$)
    VAR7=$(for FS in $(df -Mm | grep -vE "%Iused|proc" | awk '{print $2}') ; do aclget -v $FS | grep owner | sed s'/(/ /g' | sed s'/)/ /g' | awk '{print $2}' | wc -c ; done > $$ ; sort -rn $$ | head -1 ; rm -f $$)
    for FS in $(df -Mm | grep -vE "%Iused|proc" | awk '{print $2}')
    do
            OU=$(aclget -v $FS | grep owner | sed s'/(/ /g' | sed s'/)/ /g' | awk '{print $2}')
            DU=$(aclget -v $FS | grep owner | sed s'/(/ /g' | sed s'/)/ /g' | awk '{print $4}')
            OG=$(aclget -v $FS | grep group | sed s'/(/ /g' | sed s'/)/ /g' | awk '{print $2}')
            DG=$(aclget -v $FS | grep group | sed s'/(/ /g' | sed s'/)/ /g' | awk '{print $4}')
            DO=$(aclget -v $FS | grep others | awk '{print $NF}')
            df -m | grep $FS | awk -v OU=$OU -v DU=$DU -v OG=$OG -v DG=$DG -v DO=$DO '{printf ("%-'"$VAR1"'s| %-'"$VAR2"'s| %-'"$VAR3"'s| %-'"$VAR4"'s| %-'"$VAR5"'s| %-'"$VAR6"'s: %-3s | %-'"$VAR7"'s: %-3s | others : %-3s |\n", $1,$7,$2,$3,$4,OU,DU,OG,DG,DO)}'
    done
    Si vous avez des précos pour :
    1 - savoir pourquoi cela tourne 3 fois,
    2 - si vous avez des amélioration je suis preneur

    Merci d'avance à ceux qui voudrons bien se casser qq neurones

    nota : Ceci étant pour ceux que ça intéresse si vous enlevez les variables du awk sur les aclget, il peut fonctionner aussi sous nunux, avec qq variantes dans les variables (C'est la sortie du df -m qui n'est pas identique à AIX).

    Et tous mes vœux pour cette nouvelle année
    Kalwin

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Points : 92
    Points
    92
    Par défaut Un grep corrigé et plus
    Bonjour à tous et mes meilleurs voeux !!

    Pour ceux que ça intéresse, voici le résultat, cela ne fonctionne que sous AIX pour le moment. j'aspire le tuner et si certains le souhaitent, ils peuvent donner leur avis sachant que je suis seulement un bon amateur de ksh

    L'erreur était dans mon grep qui me sortait plusieurs FS donc pas bon, de plus je ne le faisais pas sur le bonne élément donc ... voilou.

    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
    root@Mon_SRV : /root/bin # cat DF
    #!/usr/bin/ksh
    VARD="%-9s"
    VARU="%-7s"
    VAR1N=$(for FS in $(df -Mm | awk '{print $1}') ; do echo $FS | wc -c ; done > $$ ; sort -rn $$ | head -1 ; rm -f $$)
    VAR1=$(echo $VAR1N | sed 's/^/%-/g' | sed 's/$/s/g')
    VAR2N=$(for FS in $(df -Mm | awk '{print $2}') ; do echo $FS | wc -c ; done > $$ ; sort -rn $$ | head -1 ; rm -f $$)
    VAR2=$(echo $VAR2N | sed 's/^/%-/g' | sed 's/$/s/g')
    VAR3N=$(for FS in $(df -Mm | awk '{print $3}') ; do echo $FS | wc -c ; done > $$ ; sort -rn $$ | head -1 ; rm -f $$)
    VAR3=$(echo $VAR3N | sed 's/^/%-/g' | sed 's/$/s/g')
    VAR4N=$(for FS in $(df -Mm | awk '{print $4}') ; do echo $FS | wc -c ; done > $$ ; sort -rn $$ | head -1 ; rm -f $$)
    VAR4=$(echo $VAR4N | sed 's/^/%-/g' | sed 's/$/s/g')
    VAR5N=$(for FS in $(df -Mm | grep -vE "%Iused|proc" | awk '{print $2}') ; do aclget -v $FS | grep owner | sed s'/(/ /g' | sed s'/)/ /g' | awk '{print $2}' | wc -c ; done > $$ ; sort -rn $$ | head -1 ; rm -f $$)
    VAR5=$(echo $VAR5N | sed 's/^/%-/g' | sed 's/$/s/g')
    VAR6N=$(for FS in $(df -Mm | grep -vE "%Iused|proc" | awk '{print $2}') ; do aclget -v $FS | grep owner | sed s'/(/ /g' | sed s'/)/ /g' | awk '{print $2}' | wc -c ; done > $$ ; sort -rn $$ | head -1 ; rm -f $$)
    VAR6=$(echo $VAR6N | sed 's/^/%-/g' | sed 's/$/s/g')
    LONG=$(expr 19 + $VAR1N + $VAR2N + $VAR3N + $VAR4N + 7 + 9 + $VAR5N + $VAR6N)
    CPT=1 ; while [ $CPT -le $LONG ] ; do printf - ; CPT=$(expr $CPT + 1) ; done ; print -
    printf "| $VAR1| $VAR2| $VAR3| $VAR4| $VARU| $VARD | $VAR5| $VAR6 |\n" "LV" "FS" "Mo_Tot" "Mo_Util" "%Util" "Droits" "Owner" "Group"
    CPT=1 ; while [ $CPT -le $LONG ] ; do printf - ; CPT=$(expr $CPT + 1) ; done ; print -
    for LV in $(df -mM | grep -vE "%Iused|proc" | awk '{print $1}' | grep -v Mount)
    do
            FS=$(df -mM | grep -w $LV | awk '{print $2}')
            if [ ${FS} == /proc ]
            then
                    OU="root"
                    DU="rwx"
                    OG="system"
                    DG="---"
                    DO="---"
            else
                    OU=$(aclget -v $FS | grep owner | sed s'/(/ /g' | sed s'/)/ /g' | awk '{print $2}')
                    OG=$(aclget -v $FS | grep group | sed s'/(/ /g' | sed s'/)/ /g' | awk '{print $2}')
                    DU=$(aclget -v $FS | grep owner | sed s'/(/ /g' | sed s'/)/ /g' | awk '{print $4}')
                    DG=$(aclget -v $FS | grep group | sed s'/(/ /g' | sed s'/)/ /g' | awk '{print $4}')
                    DO=$(aclget -v $FS | grep others | awk '{print $NF}')
                    DT=$(echo $DU$DG$DO)
            fi
            # Affichage
    df -mM | grep -w $LV | awk -v DT=$DT -v OU=$OU -v OG=$OG '{printf "| '$VAR1'| '$VAR2'| '$VAR3'| '$VAR4'| '$VARU'| '$VARD' | '$VAR5'| '$VAR6' |\n", $1,$2,$3,$4,$5,DT,OU,OG}'
    done
    CPT=1 ; while [ $CPT -le $LONG ] ; do printf - ; CPT=$(expr $CPT + 1) ; done ; print -
    
    Que les personnes n'hésitent pas à me donner leurs remarques.
    Car le tuning est aussi bien qu'un script brut, même si cela donne le même résultat

    Bien à vous kalwin

Discussions similaires

  1. Pb de formatage de champs de type float
    Par FrankyNormand dans le forum XMLRAD
    Réponses: 9
    Dernier message: 05/05/2005, 12h37
  2. formatage des requêtes sous psql
    Par Bouboubou dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 03/02/2004, 11h10
  3. problème de formatage à l'écran
    Par bidson dans le forum XMLRAD
    Réponses: 13
    Dernier message: 11/07/2003, 18h02
  4. [7RC3] Formatage de champs float
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 2
    Dernier message: 19/05/2003, 09h38
  5. pb formatage document XML généré par un dom tree
    Par lionel69 dans le forum APIs
    Réponses: 11
    Dernier message: 17/10/2002, 09h53

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