Ik gebruik hier onderstaande scripts voor. Het eerste script loopt alle geregistreerde VMs langs en roept voor iedere VM het tweede script aan. Het resultaat is zo'n lijst:
Code:
--- rws-svw001i <on> ---
scsi0:0 - /vmfs/VM1-1/rws-svw001i.vmdk (6.0G)
scsi0:1 - /vmfs/VM1-1/rws-svw001i_1.vmdk (8.0G)
scsi0:2 - /vmfs/VM1-1/rws-svw001i_2.vmdk (40G)
Total size: 54G
--- rws-svw002i <on> ---
scsi0:0 - /vmfs/VM1-1/rws-svw002i.vmdk (6.0G)
scsi0:1 - /vmfs/VM1-1/rws-svw002i_1.vmdk (4.0G)
scsi0:2 - /vmfs/VM1-1/rws-svw002i_2.vmdk (5.0G)
scsi0:3 - /vmfs/VM1-1/rws-svw002i_3.vmdk (8.0G)
Total size: 23G
--- rws-svw034i <on> ---
scsi0:0 - /vmfs/VM1-2/rws-svw034i.vmdk (8.0G)
scsi0:1 - /vmfs/VM1-2/rws-svw034i_1.vmdk (4.0G)
Total size: 12G
Dit zijn de scripts, maar het viel me op dat bijvoorbeeld $STATE niet goed door is gekomen en STATE is geworden (tussen <>). Dit zal wel door de forum software komen... Lastig als je code wilt posten. Waar /iso/beheer in het eerste script staat moet je de directory plaatsen waar je scripts staan.
/iso/beheer/listallvmdks.sh:
Code:
#!/bin/sh
# Laat de VMDKs van alle geregistreerde VMs zien
# --- Loop alle VMs langs op deze host ---
for VM in `vmware-cmd -l | sed -e "s/ /;/g"`
do
# --- Trucje om probleem met spaties in /vmx pad te omzeilen ---
VMX=`echo $VM | sed -e "s/;/ /g"`
# --- Haal gegevens op ---
DISPLAYNAME=`vmware-cmd -q "$VMX" getconfig displayname`
STATE=`vmware-cmd -q "$VMX" getstate`
# --- Output: header per VM ---
echo ""
echo " --- $DISPLAYNAME <STATE> ---"
# --- Toon VMDKs via listvmdk.sh, maak filetje in /tmp om totale grootte te kunnen berekenen ---
/iso/beheer/listvmdks.sh "$VMX" | tee /tmp/listallvmdks.tmp
# --- Bereken en toon totale grootte ---
echo -n " Total size: "
cat /tmp/listallvmdks.tmp | sed -e "s#scsi.* (\(.*\))\$#\1#" | sed -e "s#G#000000#" | sed -e "s#\([0-9]\+\)\.\([0-9]\+\)0#\1\2#" | xargs | sed -e "s# # + #g" | xargs expr | sed -e "s#000000\$#G#" | sed -e "s#\([0-9]\+\)\([0-9]\)00000\$#\1\.\2G#"
# --- Poging bovenstaande regel te verklaren...: ---
# --- 1 .Toon het listvmdks.sh lijstje ---
# --- 2. Haal de string tussen haakjes, aan het eind van de regel op ---
# --- 3. Vervang G door 6 nullen ---
# --- 4. Vervang 123.12300[0] door 12312300 ---
# --- 5. Zet alles op 1 regel ---
# --- 6. Plaats een plusteken tussen alle getallen ---
# --- 7. Tel de getallen op ---
# --- 8. Vervang 6 nullen door G ---
# --- 9. Vervang 5 nullen door G en plaats een . in het getal... ---
done
echo ""
# --- Opruimen ---
rm -f /tmp/listallvmdks.tmp
# The End
en
/iso/beheer/listvmdks.sh:
Code:
#!/bin/sh
# Toont alle VMDKs die bij een opgegeven VMX horen.
if [ -z "$1" ]
then
echo "Geef een geregistreerde VMX op!"
exit 1
fi
if [ `vmware-cmd -l | grep -x -c "$1"` -eq 0 ]
then
echo "Geef een GEREGISTREERDE VMX op!"
exit 1
fi
# Loop door de aanwezige SCSI devices
grep -i "scsi[0-9]*:[0-9]*.present.*=.*true.*" "$1" | cut -d. -f1 | while read SCSIDEV
do
# Vind de VMDK
VMDK=`vmware-cmd -q "$1" getconfig $SCSIDEV.name | sed -e "s#\(.*\):\(.*\)#/vmfs/\1/\2#"`
# Haal de grootte van de VMDK op
SIZE=`ls -sh "$VMDK" | awk '{ print $1 }'`
# Redo aanwezig?
if [ -f "$VMDK.REDO" ]
then
echo "$SCSIDEV - $VMDK <REDO> ($SIZE)"
else
echo "$SCSIDEV - $VMDK ($SIZE)"
fi
done
# The End
Code:
Code: