Précédent   Forum du club des développeurs et IT Pro > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 31/12/2012, 18h08   #1
kalwin
Membre régulier
 
Stéphane
Inscription : juin 2009
Messages : 62
Détails du profil
Informations personnelles :
Nom : Stéphane
Âge : 43
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juin 2009
Messages : 62
Points : 70
Points : 70
Envoyer un message via MSN à kalwin Envoyer un message via Yahoo à kalwin
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 :
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
kalwin est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/01/2013, 09h26   #2
kalwin
Membre régulier
 
Stéphane
Inscription : juin 2009
Messages : 62
Détails du profil
Informations personnelles :
Nom : Stéphane
Âge : 43
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juin 2009
Messages : 62
Points : 70
Points : 70
Envoyer un message via MSN à kalwin Envoyer un message via Yahoo à kalwin
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 :
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
kalwin est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h16.


 
 
 
 
Partenaires

Hébergement Web