#26 Le 28/01/2008, à 14:33
- B@rtounet
Re : [Résolu] Donner des titres aux colonnes... dans un tableau
J'ai essayé de remplacer les \t par des espaces pour gagner de la place... Mon but est de réduire au max la tailles des colone pour qu'il puisse s'afficher sur toutes les résolutions...
Mais je ne pige pas ce qu'il fait..
exemple
#!/bin/bash
#DOMLIST
#Antony MARTINEAU
#Xen Virtual Machine Information by Antony MARTINEAU.
#Fonction pour afficher les echo en couleur
#31=rouge, 32=vert, 33=jaune,34=bleu, 35=rose, 36=cyan, 37= blanc
color()
{
printf '\033[%sm%s\033[m\n' "$@"
}
xmlist="/tmp/xmlistfic"
xmsched="/tmp/schedlist"
xmdomshow="/tmp/domshow"
dompath="/etc/xen/vm"
hostname=$(uname -n)
if test -f $xmdomshow
then
echo "$xmdomshow existe"
rm -f $xmdomshow
fi
if test -f $xmlist
then
echo "$xmlist existe"
rm -f $xmlist
fi
if test -f $xmsched
then
echo "$xmsched existe"
rm -f $xmsched
fi
xm list > $xmlist
xm sched-credit > $xmsched
echo `color 31 "On $hostname"`
echo -e `color 32 "Name Status Vcpus Time Weight Cap State Memory Resources -size- -size- -size- -size- VNC-Port"`|gawk -F" " ' { printf("%-17s %-5s %-2s %-7s %-7s %-7s %-7s %-7s %-15s %-7s %-7s %-7s %-7s %-7s %s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15) }'
lines=$(cat /etc/xen/vm/*|grep "name"|cut -d'"' -f2| wc -l)
if [ -z $lines ]; then
lines=1
fi
for i in `seq 1 $lines`
do
vmname[$i]=$(cat $dompath/*|grep "name" |cut -d'"' -f2 |sed -n "$i{p;q;}")
vmres[$i]=$(cat $dompath/*|grep "#_r"|cut -d'"' -f2 | cut -d"#" -f2 | sed 's/_//' | sed 's/_/ /' |sed 's/_/ /' | sed 's/_/ /'| sed 's/_/ /' |sed -n "$i{p;q;}")
vname=${vmname[$i]}
res=${vmres[$i]}
pidvm=$(ps aux | grep -w qemu-dm |grep -w $vname | awk '{print $2}')
vmid=$(cat $xmlist | grep -w $vname | awk '{print $2}' | cut -d":" -f2)
vmcpu=$(cat $dompath/$vname | grep vcpus | cut -d"=" -f2)
vmstate=$(cat $xmlist | grep -w $vname | awk '{print $5}' | cut -d":" -f2)
vmtime=$(cat $xmlist | grep -w $vname | awk '{print $6}' | cut -d":" -f2)
vmweight=$(cat $xmsched | grep -w $vname | awk '{print $3}' | cut -d":" -f2)
vmcap=$(cat $xmsched | grep -w $vname | awk '{print $4}' | cut -d":" -f2)
lvname=$(echo $res | sed 's/r/vm/')
lvsize=$(lvdisplay 2> /dev/null | grep -B8 lv$i | grep Size | awk '{print $3}')
vmexist=$(cat $xmlist | grep $vname | awk '{print $1}')
vmresor=$(cat /etc/xen/vm/* | grep "#_r" |cut -d'"' -f2 | cut -d"#" -f2 | sed -n "$i{p;q;}")
res4=$( echo $vmresor | cut -d"_" -f5)
res3=$( echo $vmresor | cut -d"_" -f4)
res2=$( echo $vmresor | cut -d"_" -f3)
res1=$( echo $vmresor | cut -d"_" -f2)
vmmem=$empty
if [ ! -z $vmid ]; then
vmmem=$( cat $xmlist | grep -w $vname | awk '{print $3}' | cut -d":" -f2 |sed 's/$/MB/')
else
vmmem=$(cat $dompath/$vname | grep memory | cut -d"=" -f2 |sed 's/$/MB/')
fi
sizer1=$empty
if [ ! -z $res1 ]; then
lv1=$(echo $res1 | sed 's/r/lv/')
sizer1=$(lvdisplay 2> /dev/null | grep -A8 -w $lv1 | grep Size | awk '{print $3,$4}' | sed 's/ //')
else
res1=" "
fi
sizer2=$empty
if [ ! -z $res2 ]; then
lv2=$(echo $res2 | sed 's/r/lv/')
sizer2=$(lvdisplay 2> /dev/null | grep -A8 -w $lv2 | grep Size | awk '{print $3,$4}'| sed 's/ //')
else
res2=" "
fi
sizer3=$empty
if [ ! -z $res3 ]; then
lv3=$(echo $res3 | sed 's/r/lv/')
sizer3=$(lvdisplay 2> /dev/null | grep -A8 -w $lv3 | grep Size | awk '{print $3,$4}'| sed 's/ //')
else
res3=" "
fi
sizer4=$empty
if [ ! -z $res4 ]; then
lv4=$(echo $res4 | sed 's/r/lv/')
sizer4=$(lvdisplay 2> /dev/null | grep -A8 -w $lv4 | grep Size | awk '{print $3,$4}'| sed 's/ //')
else
res4=" "
fi
if [ -z $pidvm ]; then
vncport="No vnc"
else
vncport=$(netstat -anp | grep LIST | grep -w $pidvm | awk '{print $4}' | cut -d":" -f2 )
fi
if [ -z $vmexist ]; then
vmrun="off"
else
vmrun="on"
fi
echo -e "$vname $vmrun $vmid $vmcpu $vmtime $vmweight $vmcap $vmstate $vmmem $res1$res2$res3$res4 $sizer1 $sizer2 $sizer3 $sizer4 $vncport"
done | gawk -F" " ' { printf("%-12s %-6s %-7s %-7s %-7s %-7s %-7s %-7s %-7s %-15s %-7s %-7s %-7s %-7s %s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15) }'
rm -f $xmlist
rm -f $xmsched
Pourquoi mémory qui est tout de meme la 8eme colonne se retrouve sous time...
ne devrait t'il pas me laisser un espace de 7 caractère pour caque colonne (donc 7 caractère de blanc??)
Name Status Vcpus Time Weight Cap State Memory Resources -size- -size- -size- -size- VNC-Port
win2K3_32_0 off 2 512MB r0 8.00GB No vnc
win2K3_32_1 off 2 512MB r1 8.00GB No vnc
win2K3_32_2 off 2 512MB r2 8.00GB No vnc
win2K3_32_3 off 2 512MB r3r6 8.00GB 8.00GB No vnc
win2K3_32_4 off 2 512MB r4 8.00GB No vnc
win2K3_32_5 off 2 512MB r5 8.00GB No vnc
win2K3_32_6 off 2 512MB r7r8r9r10 8.00GB 8.00GB 8.00GB 8.00GB No vnc
win2K3_32_7 off 2 512MB r11r12r13r14 8.00GB 8.00GB 8.00GB 8.00GB No vnc
win2K3_32_8 off 2 1024MB r15 15.00GB No vnc
Hors ligne
#27 Le 28/01/2008, à 14:44
- freebird
Re : [Résolu] Donner des titres aux colonnes... dans un tableau
Attention à la longueur des informations que tu affiches. Tu dépasses les longueurs que tu lui dis donc ça décale tout.
Pour les titres tu dis que ta 3eme colonne prend le format %-2s alors que tu lui donnes Vcpus. Tu dépasses donc de 3 pour cette colonne.
Une petite information importante concernant le fonctionnement de gawk. Que tu aies 1 espace ou 10 il ne s'en occupe pas. Si tu as des valeurs vides dans tes colonnes il ne verra donc pas que c'est une colonne et décalera tout. L'utilisation des tabulations évitait ça. Tu peux les laisser pour ton cas, ce n'est pas ça qui détermine l'affichage.
Dernière modification par freebird (Le 28/01/2008, à 16:01)
Hors ligne
#28 Le 28/01/2008, à 15:06
- B@rtounet
Re : [Résolu] Donner des titres aux colonnes... dans un tableau
Merci pour ton aide
j'ai reussi à faire à peu près ce que je voulais
#!/bin/bash
#DOMLIST
#Antony MARTINEAU
#Xen Virtual Machine Information by Antony MARTINEAU.
#Fonction pour afficher les echo en couleur
#31=rouge, 32=vert, 33=jaune,34=bleu, 35=rose, 36=cyan, 37= blanc
color()
{
printf '\033[%sm%s\033[m\n' "$@"
}
xmlist="/tmp/xmlistfic"
xmsched="/tmp/schedlist"
xmdomshow="/tmp/domshow"
dompath="/etc/xen/vm"
hostname=$(uname -n)
if test -f $xmdomshow
then
echo "$xmdomshow existe"
rm -f $xmdomshow
fi
if test -f $xmlist
then
echo "$xmlist existe"
rm -f $xmlist
fi
if test -f $xmsched
then
echo "$xmsched existe"
rm -f $xmsched
fi
xm list > $xmlist
xm sched-credit > $xmsched
echo `color 31 "On $hostname"`
echo -e `color 32 "Name Status ID Vcpus Time Weight Cap State Memory Resources -size- -size- -size- -size- VNC-Port"`|gawk -F" " ' { printf("%-17s %-5s %-2s %-5s %-7s %-7s %-5s %-7s %-7s %-15s %-7s %-7s %-7s %-7s %s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15) }'
lines=$(cat /etc/xen/vm/*|grep "name"|cut -d'"' -f2| wc -l)
if [ -z $lines ]; then
lines=1
fi
for i in `seq 1 $lines`
do
vmname[$i]=$(cat $dompath/*|grep "name" |cut -d'"' -f2 |sed -n "$i{p;q;}")
vmres[$i]=$(cat $dompath/*|grep "#_r"|cut -d'"' -f2 | cut -d"#" -f2 | sed 's/_//' | sed 's/_/ /' |sed 's/_/ /' | sed 's/_/ /'| sed 's/_/ /' |sed -n "$i{p;q;}")
vname=${vmname[$i]}
res=${vmres[$i]}
pidvm=$(ps aux | grep -w qemu-dm |grep -w $vname | awk '{print $2}')
vmid=$(cat $xmlist | grep -w $vname | awk '{print $2}' | cut -d":" -f2)
vmcpu=$(cat $dompath/$vname | grep vcpus | cut -d"=" -f2)
vmstate=$(cat $xmlist | grep -w $vname | awk '{print $5}' | cut -d":" -f2)
vmtime=$(cat $xmlist | grep -w $vname | awk '{print $6}' | cut -d":" -f2)
vmweight=$(cat $xmsched | grep -w $vname | awk '{print $3}' | cut -d":" -f2)
vmcap=$(cat $xmsched | grep -w $vname | awk '{print $4}' | cut -d":" -f2)
lvname=$(echo $res | sed 's/r/vm/')
lvsize=$(lvdisplay 2> /dev/null | grep -B8 lv$i | grep Size | awk '{print $3}')
vmexist=$(cat $xmlist | grep $vname | awk '{print $1}')
vmresor=$(cat /etc/xen/vm/* | grep "#_r" |cut -d'"' -f2 | cut -d"#" -f2 | sed -n "$i{p;q;}")
res4=$( echo $vmresor | cut -d"_" -f5)
res3=$( echo $vmresor | cut -d"_" -f4)
res2=$( echo $vmresor | cut -d"_" -f3)
res1=$( echo $vmresor | cut -d"_" -f2)
vmmem=$empty
if [ ! -z $vmid ]; then
vmmem=$( cat $xmlist | grep -w $vname | awk '{print $3}' | cut -d":" -f2 |sed 's/$/MB/')
else
vmmem=$(cat $dompath/$vname | grep memory | cut -d"=" -f2 |sed 's/$/MB/')
fi
sizer1=$empty
if [ ! -z $res1 ]; then
lv1=$(echo $res1 | sed 's/r/lv/')
sizer1=$(lvdisplay 2> /dev/null | grep -A8 -w $lv1 | grep Size | awk '{print $3,$4}' | sed 's/ //')
else
res1=" "
fi
sizer2=$empty
if [ ! -z $res2 ]; then
lv2=$(echo $res2 | sed 's/r/lv/')
sizer2=$(lvdisplay 2> /dev/null | grep -A8 -w $lv2 | grep Size | awk '{print $3,$4}'| sed 's/ //')
else
res2=" "
fi
sizer3=$empty
if [ ! -z $res3 ]; then
lv3=$(echo $res3 | sed 's/r/lv/')
sizer3=$(lvdisplay 2> /dev/null | grep -A8 -w $lv3 | grep Size | awk '{print $3,$4}'| sed 's/ //')
else
res3=" "
fi
sizer4=$empty
if [ ! -z $res4 ]; then
lv4=$(echo $res4 | sed 's/r/lv/')
sizer4=$(lvdisplay 2> /dev/null | grep -A8 -w $lv4 | grep Size | awk '{print $3,$4}'| sed 's/ //')
else
res4=" "
fi
if [ -z $pidvm ]; then
vncport="No vnc"
else
vncport=$(netstat -anp | grep LIST | grep -w $pidvm | awk '{print $4}' | cut -d":" -f2 )
fi
if [ -z $vmexist ]; then
vmrun="off"
else
vmrun="on"
fi
echo -e "$vname:$vmrun:$vmid:$vmcpu:$vmtime:$vmweight:$vmcap:$vmstate:$vmmem:$res1 $res2 $res3 $res4:$sizer1:$sizer2:$sizer3:$sizer4:$vncport"
done | gawk -F":" ' { printf("%-12s %-6s %-2s %-5s %-7s %-7s %-5s %-7s %-7s %-15s %-7s %-7s %-7s %-7s %s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15) }'
rm -f $xmlist
rm -f $xmsched
suse2:~ # domtest
On suse2
Name Status ID Vcpus Time Weight Cap State Memory Resources -size- -size- -size- -size- VNC-Port
win2K3_32_0 on 47 2 31.2 256 50 -b---- 512MB r0 8.00GB 5900
win2K3_32_1 off 2 512MB r1 8.00GB No vnc
win2K3_32_2 off 2 512MB r2 8.00GB No vnc
win2K3_32_3 off 2 512MB r3 r6 8.00GB 8.00GB No vnc
win2K3_32_4 off 2 512MB r4 8.00GB No vnc
win2K3_32_5 off 2 512MB r5 8.00GB No vnc
win2K3_32_6 off 2 512MB r7 r8 r9 r10 8.00GB 8.00GB 8.00GB 8.00GB No vnc
win2K3_32_7 off 2 512MB r11 r12 r13 r14 8.00GB 8.00GB 8.00GB 8.00GB No vnc
win2K3_32_8 off 2 1024MB r15 15.00GB No vnc
c'est un peu de la bidouille avec la taille des colonnes
Dernière modification par B@rtounet (Le 28/01/2008, à 16:27)
Hors ligne
#29 Le 31/01/2008, à 10:47
- B@rtounet
Re : [Résolu] Donner des titres aux colonnes... dans un tableau
Bonjour me revoila, j'ai rajouter une collone
Mais je ne comprend pas pkoi il ne m'affiche que les deux premier caractère de l'uptime...
#!/bin/bash
#DOMLIST
#Antony MARTINEAU
#Xen Virtual Machine Information by Antony MARTINEAU.
#Fonction pour afficher les echo en couleur
#31=rouge, 32=vert, 33=jaune,34=bleu, 35=rose, 36=cyan, 37= blanc
color()
{
printf '\033[%sm%s\033[m\n' "$@"
}
xmlist="/tmp/xmlistfic"
xmsched="/tmp/schedlist"
xmdomshow="/tmp/domshow"
dompath="/etc/xen/vm"
hostname=$(uname -n)
if test -f $xmdomshow
then
echo "$xmdomshow existe"
rm -f $xmdomshow
fi
if test -f $xmlist
then
echo "$xmlist existe"
rm -f $xmlist
fi
if test -f $xmsched
then
echo "$xmsched existe"
rm -f $xmsched
fi
xm list > $xmlist
xm sched-credit > $xmsched
echo `color 31 "On $hostname"`
echo -e `color 32 "Name Status ID Vcpus Time Weight Cap State Memory Resources -size- -size- -size- -size- VNC-Port Uptime"`|gawk -F" " ' { printf("%-17s %-6s %-3s %-4s %-6s %-5s %-2s %-6s %-7s %-17s %-5s %-5s %-5s %-5s %-5s %s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16) }'
lines=$(cat /etc/xen/vm/*|grep "name"|cut -d'"' -f2| wc -l)
if [ -z $lines ]; then
lines=1
fi
for i in `seq 1 $lines`
do
vmname[$i]=$(cat $dompath/*|grep "name" |cut -d'"' -f2 |sed -n "$i{p;q;}")
vmres[$i]=$(cat $dompath/*|grep "#_r"|cut -d'"' -f2 | cut -d"#" -f2 | sed 's/_//' | sed 's/_/ /' |sed 's/_/ /' | sed 's/_/ /'| sed 's/_/ /' |sed -n "$i{p;q;}")
vname=${vmname[$i]}
res=${vmres[$i]}
pidvm=$(ps aux | grep -w qemu-dm |grep -w $vname | awk '{print $2}')
vmid=$(cat $xmlist | grep -w $vname | awk '{print $2}' | cut -d":" -f2)
vmcpu=$(cat $dompath/$vname | grep vcpus | cut -d"=" -f2)
vmstate=$(cat $xmlist | grep -w $vname | awk '{print $5}' | cut -d":" -f2)
vmtime=$(cat $xmlist | grep -w $vname | awk '{print $6}' | cut -d":" -f2)
vmweight=$(cat $xmsched | grep -w $vname | awk '{print $3}' | cut -d":" -f2)
vmcap=$(cat $xmsched | grep -w $vname | awk '{print $4}' | cut -d":" -f2)
lvname=$(echo $res | sed 's/r/vm/')
lvsize=$(lvdisplay 2> /dev/null | grep -B8 lv$i | grep Size | awk '{print $3}')
vmexist=$(cat $xmlist | grep $vname | awk '{print $1}')
uptime=$(xm uptime $vmexist | sed -n "2{p;q;}" | awk '{print $3}')
vmresor=$(cat /etc/xen/vm/* | grep "#_r" |cut -d'"' -f2 | cut -d"#" -f2 | sed -n "$i{p;q;}")
res4=$( echo $vmresor | cut -d"_" -f5)
res3=$( echo $vmresor | cut -d"_" -f4)
res2=$( echo $vmresor | cut -d"_" -f3)
res1=$( echo $vmresor | cut -d"_" -f2)
vmmem=$empty
if [ ! -z $vmid ]; then
vmmem=$( cat $xmlist | grep -w $vname | awk '{print $3}' | cut -d":" -f2 |sed 's/$/MB/')
else
vmmem=$(cat $dompath/$vname | grep memory | cut -d"=" -f2 |sed 's/$/MB/')
fi
sizer1=$empty
if [ ! -z $res1 ]; then
lv1=$(echo $res1 | sed 's/r/lv/')
sizer1=$(lvdisplay 2> /dev/null | grep -A8 -w $lv1 | grep Size | awk '{print $3,$4}' | sed 's/ //' | sed 's/.00//')
else
res1=" "
fi
sizer2=$empty
if [ ! -z $res2 ]; then
lv2=$(echo $res2 | sed 's/r/lv/')
sizer2=$(lvdisplay 2> /dev/null | grep -A8 -w $lv2 | grep Size | awk '{print $3,$4}'| sed 's/ //'| sed 's/ //' | sed 's/.00//')
else
res2=" "
fi
sizer3=$empty
if [ ! -z $res3 ]; then
lv3=$(echo $res3 | sed 's/r/lv/')
sizer3=$(lvdisplay 2> /dev/null | grep -A8 -w $lv3 | grep Size | awk '{print $3,$4}'| sed 's/ //'| sed 's/ //' | sed 's/.00//')
else
res3=" "
fi
sizer4=$empty
if [ ! -z $res4 ]; then
lv4=$(echo $res4 | sed 's/r/lv/')
sizer4=$(lvdisplay 2> /dev/null | grep -A8 -w $lv4 | grep Size | awk '{print $3,$4}'| sed 's/ //'| sed 's/ //' | sed 's/.00//')
else
res4=" "
fi
if [ -z $pidvm ]; then
vncport="No vnc"
else
vncport=$(netstat -anp | grep LIST | grep -w $pidvm | awk '{print $4}' | cut -d":" -f2 )
fi
if [ -z $vmexist ]; then
vmrun="off"
else
vmrun="on"
fi
echo -e "$vname:$vmrun:$vmid:$vmcpu:$vmtime:$vmweight:$vmcap:$vmstate:$vmmem:$res1 $res2 $res3 $res4:$sizer1:$sizer2:$sizer3:$sizer4:$vncport:$uptime"
done | gawk -F":" ' { printf("%-12s %-6s %-3s %-5s %-6s %-6s %-3s %-6s %-7s %-17s %-6s %-6s %-6s %-6s %-8s %s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16) }'
rm -f $xmlist
rm -f $xmsched
On suse1
Name Status ID Vcpus Time Weight Cap State Memory Resources -size- -size- -size- -size- VNC-Port Uptime
win2K3_32_0 on 31 2 400.6 256 0 -b---- 512MB r0 8GB 5900 16
win2K3_32_1 on 32 2 392.4 256 0 -b---- 512MB r1 8GB 5901 16
win2K3_32_2 on 33 2 392.7 256 0 -b---- 512MB r2 8GB 5902 16
win2K3_32_3 on 34 2 391.8 256 0 -b---- 512MB r3 r6 8GB 8GB 5903 16
win2K3_32_4 on 35 2 386.1 256 0 -b---- 512MB r4 8GB 5904 16
win2K3_32_5 on 36 2 391.0 256 0 -b---- 512MB r5 8GB 5905 16
win2K3_32_6 on 37 2 379.1 256 0 -b---- 512MB r7 r8 r9 r10 8GB 8GB 8GB 8GB 5906 16
win2K3_32_7 on 38 2 487.9 256 0 -b---- 512MB r11 r12 r13 r14 8GB 8GB 8GB 8GB 5907 16
win2K3_32_8 on 39 2 383.1 256 0 -b---- 512MB r15 15GB 5908 16
win2K3_32_9 on 40 2 391.7 256 0 -b---- 512MB r16 r17 r18 r19 20GB 20GB 20GB 25GB 5909 16
Si tu as une idée
Hors ligne
#30 Le 31/01/2008, à 19:22
- freebird
Re : [Résolu] Donner des titres aux colonnes... dans un tableau
Ton uptime est au format HH:MM:SS non ? Vu que tu luis dis que le caractère : est ton séparateur il ne prend que le début. D'expérience le ; est on bon séparateur de valeur
Hors ligne
#31 Le 01/02/2008, à 00:15
- B@rtounet
Re : [Résolu] Donner des titres aux colonnes... dans un tableau
Vi j'ai fini par voir l'erreur merci de ton aide
Hors ligne
#32 Le 07/05/2008, à 13:46
- B@rtounet
Re : [Résolu] Donner des titres aux colonnes... dans un tableau
Bonjour,
mon script à bcp évolué et me donne satisfaction, par contre je cherche à savoir pkoi il est si lent..
aurait tu des idées d'améliorations..??
je ne comprend pas car je l'ai modifié pour faire que des cat dans des fichiers en ram... ca devrait etre quasi instantané, mais ca ne l'est pas...
je pense que c'est la création du tableau qui ralenti..
Qu'en pense tu?
#!/bin/bash
#DOMLIST V1.0
#Antony MARTINEAU
#Xen Virtual Machine Information by Antony MARTINEAU.
ramdisk="/tmpramfs"
if [ -z $(mount | grep /tmpramfs | awk '{print $3}') ]; then
if [ -z $(ls / | grep tmpramfs) ]; then
mkdir /tmpramfs
mount -t tmpfs -o size=16M, tmpfs /tmpramfs > /dev/null 2>&1
else
mount -t tmpfs -o size=16M, tmpfs /tmpramfs > /dev/null 2>&1
fi
fi
#Fonction pour afficher les echo en couleur
#31=rouge, 32=vert, 33=jaune,34=bleu, 35=rose, 36=cyan, 37= blanc
color()
{
printf '\033[%sm%s\033[m\n' "$@"
}
xmlist="$ramdisk/xmlistfic"
xmsched="$ramdisk/schedlist"
xmdomshow="$ramdisk/domshow"
dompath="/etc/xen/vm"
xmuptime="$ramdisk/xmuptimefic"
hostname=$(uname -n)
if test -f $xmdomshow
then
# echo "$xmdomshow existe"
rm -f $xmdomshow
fi
if test -f $xmlist
then
# echo "$xmlist existe"
rm -f $xmlist
fi
if test -f $xmsched
then
# echo "$xmsched existe"
rm -f $xmsched
fi
if test -f $xmuptime
then
# echo "$xmuptime existe"
rm -f $xmuptimefic
fi
xm list > $xmlist
xm sched-credit > $xmsched
xm uptime > $xmuptime
echo `color 31 "On $hostname"`
echo -e `color 32 ";Name ;Status ;ID ;Uptime ;Vcpus ;Time ;Weight ;Cap ;State ;Memory ;Resources ;-size- ;-size- ;-size- ;-size- ;VNC-Port"` |gawk -F" " ' { printf("%-17s %-6s %-5s %-9s %-3s %-6s %-2s %-3s %-7s %-8s %-17s %-5s %-5s %-5s %-5s %s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16) }'
lines=$(cat $dompath/*|grep "name"|cut -d'"' -f2| wc -l)
if [ -z $lines ]; then
lines=1
fi
for i in `seq 1 $lines`
do
vmname[$i]=$(cat $dompath/*|grep "name" |cut -d'"' -f2 |sed -n "$i{p;q;}")
vmres[$i]=$(cat $dompath/*|grep "#_r"|cut -d'"' -f2 | cut -d"#" -f2 | sed 's/_//' | sed 's/_/ /' |sed 's/_/ /' | sed 's/_/ /'| sed 's/_/ /' |sed -n "$i{p;q;}")
vname=${vmname[$i]}
res=${vmres[$i]}
pidvm=$(ps aux | grep -w qemu-dm |grep -w $vname | awk '{print $2}')
vmid=$(cat $xmlist | grep -w $vname | awk '{print $2}' | cut -d":" -f2)
vmcpu=$(cat $dompath/$vname | grep vcpus | cut -d"=" -f2)
vmstate=$(cat $xmlist | grep -w $vname | awk '{print $5}' | cut -d":" -f2)
vmtime=$empty
lvname=$(echo $res | sed 's/r/vm/')
lvsize=$(lvdisplay 2> /dev/null | grep -B8 lv$i | grep Size)
vmexist=$(cat $xmlist | grep $vname | awk '{print $1}')
uptime=$empty
vmweigt=$empty
if [ ! -z $vmid ]; then
vmweight=$(cat $xmsched | grep -w $vname | awk '{print $3}' | cut -d":" -f2)
else
vmweight=$(cat $dompath/$vname | grep "cpu_weight" | cut -d"=" -f2)
fi
vmcap=$empty
if [ ! -z $vmid ]; then
vmcap=$(cat $xmsched | grep -w $vname | awk '{print $4}' | cut -d":" -f2)
else
vmcap=$(cat $dompath/$vname | grep cpu_cap | cut -d"=" -f2)
fi
second=$(cat $xmlist | grep -w $vname | awk '{print $6}' | cut -d":" -f2 | cut -d"." -f-1)
if [ -z $second ]; then #second est nulle
vmtime=""
else
if [ "$second" -lt 3600 ]; then
second=$(cat $xmlist | grep -w $vname | awk '{print $6}' | cut -d":" -f2 | cut -d"." -f-1)
vmtime=$(echo $second's')
else
min=$(($second/60))
if [ "$min" -lt 1440 ]; then
vmtime=$(echo $min'm')
else
hour=$(($min/60))
vmtime=$(echo $hour'h')
fi
fi
fi
day=$(cat $xmuptime | grep -w $vname | cut -d"," -f1|awk '{print $4}'| sed '/^$/d')
if [ ! -z $day ]; then #day est non nul
day=$(cat $xmuptime | grep -w $vname | awk '{print $3}')
hours=$(cat $xmuptime | grep -w $vname | cut -d":" -f1 | cut -d"," -f2 | sed 's/ //g')
if [ "$hours" -lt 10 ]; then
hours=$(cat $xmuptime | grep -w $vname | cut -d":" -f1 | cut -d"," -f2 | sed 's/ //g'| sed 's/^/0/g')
uptime=$(cat $xmuptime | grep $vname | awk '{print $3,$4,$5}'|cut -d":" -f2-3 | cut -d":" -f1)
uptime=$(echo $hours:$uptime |sed 's/^/'$day'd,/g'| sed 's/:/h:/2' | sed 's/$//')
else
uptime=$(cat $xmuptime | grep $vname | awk '{print $3,$4,$5}'|cut -d":" -f2-3 | cut -d":" -f1)
uptime=$(echo $hours:$uptime |sed 's/^/'$day'd,/g'| sed 's/:/h:/2' | sed 's/$//' )
fi
else #day est nul
hours=$(cat $xmuptime | grep -w $vname | cut -d"," -f1 | awk '{print $3}' | cut -d":" -f1)
#echo $hours
if [ -z $hours ]; then
uptime=$(cat $xmuptime | grep $vname | awk '{print $3,$4,$5}'| sed 's/^/'$day'd,/g' | cut -d":" -f1 | sed 's/:/h:/2' | sed 's/$/m/' )
else
if [ "$hours" -lt 10 ]; then
uptime=$(cat $xmuptime | grep -w $vname | cut -d"," -f1 | awk '{print $3}' | cut -d":" -f-2 | sed 's/^/0/' | sed 's/^//' )
else
uptime=$(cat $xmuptime | grep $vname | awk '{print $3,$4,$5}'| sed 's/$//'| cut -d":" -f-2 |sed 's/^//')
fi
fi
fi
vmresor=$(cat $dompath/* | grep "#_r" |cut -d'"' -f2 | cut -d"#" -f2 | sed -n "$i{p;q;}")
res4=$( echo $vmresor | cut -d"_" -f5)
res3=$( echo $vmresor | cut -d"_" -f4)
res2=$( echo $vmresor | cut -d"_" -f3)
res1=$( echo $vmresor | cut -d"_" -f2)
vmmem=$empty
if [ ! -z $vmid ]; then
vmmem=$( cat $xmlist | grep -w $vname | awk '{print $3}' | cut -d":" -f2 |sed 's/$/MB/')
else
vmmem=$(cat $dompath/$vname | grep memory | cut -d"=" -f2 |sed 's/$/MB/')
fi
sizer1=$empty
if [ ! -z $res1 ]; then
lv1=$(echo $res1 | sed 's/r/lv/')
sizer1=$(lvdisplay 2> /dev/null | grep -A8 -w $lv1 | grep "LV Size" | awk '{print $3,$4}' | sed 's/ //' | sed 's/.00//'| sed -n '1p')
else
res1=" "
fi
sizer2=$empty
if [ ! -z $res2 ]; then
lv2=$(echo $res2 | sed 's/r/lv/')
sizer2=$(lvdisplay 2> /dev/null | grep -A8 -w $lv2 | grep "LV Size" | awk '{print $3,$4}'| sed 's/ //'| sed 's/ //' | sed 's/.00//'| sed -n '1p')
else
res2=" "
fi
sizer3=$empty
if [ ! -z $res3 ]; then
lv3=$(echo $res3 | sed 's/r/lv/')
sizer3=$(lvdisplay 2> /dev/null | grep -A8 -w $lv3 | grep "LV Size" | awk '{print $3,$4}'| sed 's/ //'| sed 's/ //' | sed 's/.00//'| sed -n '1p')
else
res3=" "
fi
sizer4=$empty
if [ ! -z $res4 ]; then
lv4=$(echo $res4 | sed 's/r/lv/')
sizer4=$(lvdisplay 2> /dev/null | grep -A8 -w $lv4 | grep "LV Size" | awk '{print $3,$4}'| sed 's/ //'| sed 's/ //' | sed 's/.00//'| sed -n '1p')
else
res4=" "
fi
if [ -z $pidvm ]; then
vncport="No vnc"
else
vncport=$(netstat -anp | grep LIST | grep -w $pidvm | awk '{print $4}' | cut -d":" -f2 )
fi
if [ -z $vmexist ]; then
vmrun="off"
else
vmrun="on"
fi
echo -e ";$vname/;$vmrun/;$vmid/;$uptime/;$vmcpu/;$vmtime/;$vmweight/;$vmcap/;$vmstate/;$vmmem/;$res1 $res2 $res3 $res4/;$sizer1/;$sizer2/;$sizer3/;$sizer4/;$vncport"
done | gawk -F"/" ' { printf("%-12s %-7s %-5s %-9s %-6s %-6s %-7s %-4s %-7s %-8s %-17s %-7s %-7s %-7s %-7s %-s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16) }'
rm -f $xmlist
rm -f $xmsched
Et le résultat...
Je suis très satisfait du résultat, reste plus qu'a optimiser la vitesse
Name Status ID Uptime Vcpus Time Weight Cap State Memory Resources -size- -size- -size- -size- VNC-Port
gusty32 off 2 256 0 512MB r15 15GB No vnc
hardy64 off 2 256 0 512MB r25 8GB No vnc
lippi-paiv off 4 256 0 4096MB r20 r21 20GB 50GB No vnc
lippi-web on 17 21:38 2 774s 256 0 -b---- 512MB r22 20GB 5900
overwrite off 2 256 0 512MB r27 8GB No vnc
toto off 1 256 50 1024MB r29 8GB No vnc
win2K3_32_0 off 2 256 0 512MB r0 r6 r23 8GB 8GB 8GB No vnc
win2K3_32_1 off 2 512MB r1 8GB No vnc
win2K3_32_2 off 2 512MB r2 r0 8GB 8GB No vnc
win2K3_32_3 off 2 512MB r3 8GB No vnc
win2K3_32_4 off 2 512MB r4 8GB No vnc
win2K3_32_5 off 2 512MB r5 8GB No vnc
win2K3_32_6 off 2 256 0 512MB r7 r8 r9 r10 8GB 8GB 8GB 8GB No vnc
win2K3_32_7 off 2 256 0 512MB r11 r12 r13 r14 8GB 8GB 8GB 8GB No vnc
win2K3_32_9 off 2 256 0 512MB r16 r19 20GB 25GB No vnc
winxpsp2_1 off 2 256 0 512MB r24 8GB No vnc
ps: ce n'est pas un probleme de puissance machine
Quad core + 8Go de Ram, Raid0 sur deux disque 15000tpm
Hors ligne