Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 28/01/2008, à 15: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, à 15: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, à 17:01)

Hors ligne

#28 Le 28/01/2008, à 16: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, à 17:27)

Hors ligne

#29 Le 31/01/2008, à 11: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, à 20: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 wink

Hors ligne

#31 Le 01/02/2008, à 01: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 wink

Hors ligne

#32 Le 07/05/2008, à 14: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