~ # grep -E "\<test\>" /tmp/vms_list
"16";"test vm";"[datastore-1]";"New Virtual Machine/New Virtual Machine.vmx"
~ # grep -E "\<test vm\>" /tmp/vms_list
"16";"test vm";"[datastore-1]";"New Virtual Machine/New Virtual Machine.vmx"
~ #
grep -E "\"${VM_NAME}\"" /tmp/vms_list | ...
~ # grep -E "\"test vm\"" /tmp/vms_list
"16";"test vm";"[datastore-1]";"New Virtual Machine/New Virtual Machine.vmx"
~ # grep -E "\"test\"" /tmp/vms_list
~ #
#!/bin/bash
# Backup the current IFS
OLD_IFS="${IFS}"
IFS=";"
# Name of VM we're looking for
MY_VMNAME="vm"
# Walk through stdin, stop at first match
while read VM_ID VM_NAME VM_DS VM_VMX; do
test "${MY_VMNAME}" = "${VM_NAME}" && break
done << __VMS_LIST__
1;vm01;[datastore-1];New Virtual Machine #1/New Virtual Machine #1.vmx
2;vm02;[datastore-1];New Virtual Machine #2/New Virtual Machine #2.vmx
3;vm03;[datastore-1];New Virtual Machine #3/New Virtual Machine #3.vmx
4;vm04;[datastore-1];New Virtual Machine #4/New Virtual Machine #4.vmx
5;random vm name;[datastore-1];random vm name/random vm name.vmx
6;vm;[datastore-1];vm/vm.vmx
7;vm05;[datastore-1];New Virtual Machine #5/New Virtual Machine #5.vmx
8;vm06;[datastore-1];New Virtual Machine #6/New Virtual Machine #6.vmx
__VMS_LIST__
# Print the values of the last record read
echo ${VM_ID} ${VM_NAME} ${VM_DS} ${VM_VMX}
# Restore IFS
IFS="${OLD_IFS}"
~ # ./testvmlist.sh
6 vm [datastore-1] vm/vm.vmx
~ #
#dump out all virtual machines allowing for spaces now
${VMWARE_CMD} vmsvc/getallvms | sed 's/[[:blank:]]\{3,\}/ /g' | awk -F' ' '{print $1";"$2";"$3}' | sed 's/\] /\];/g' | sed '1,1d' > /tmp/vms_list
IFS=$'\n'
for MY_VMNAME in `cat ${VM_INPUT} | sed '/^$/d' | sed -e 's/^[[:blank:]]*//;s/[[:blank:]]*$//'`;
do
OLD_IFS="${IFS}"
IFS=";"
while read VM_ID VM_NAME VM_DS VMX_CONF; do
test "${MY_VMNAME}" = "${VM_NAME}" && break
done </tmp/vms_list
# Restore IFS
IFS="${OLD_IFS}"
VMFS_VOLUME=`echo "${VM_DS}" | sed 's/\[//;s/\]//g'`
# VM_ID=`grep "${VM_NAME}" /tmp/vms_list | awk -F ";" '{print $1}' | sed 's/"//g'`
#ensure default value if one is not selected or variable is null
if [ -z ${VM_BACKUP_DIR_NAMING_CONVENTION} ]; then
VM_BACKUP_DIR_NAMING_CONVENTION="$(date +%F)"
fi
#esx
if ; then
#VMFS_VOLUME=`grep \"${VM_NAME}\" /tmp/vms_list | awk -F ";" '{print $3}' | sed 's/\[//;s/\]//;s/"//g'`
#VMX_CONF=`grep \"${VM_NAME}\" /tmp/vms_list | awk -F ";" '{print $4}' | sed 's/"//g'`
VMX_PATH="/vmfs/volumes/${VMFS_VOLUME}/${VMX_CONF}"
VMX_DIR=`dirname "${VMX_PATH}"`
#VMX_DIR=`echo ${VMX_DIR%/*}`
fi
#esxi
if ; then
#VMFS_VOLUME=`grep -E \"${VM_NAME}\" /tmp/vms_list | awk -F ";" '{print $3}' | sed 's/\[//;s/\]//;s/"//g'`
#VMX_CONF=`grep -E \"${VM_NAME}\" /tmp/vms_list | awk -F ";" '{print $4}' | sed 's/\[//;s/\]//;s/"//g'`
VMX_DIR=`dirname "${VMX_CONF}"`
#VMX_DIR=`echo ${VMX_DIR%/*}`
VMX_DIR=/vmfs/volumes/${VMFS_VOLUME}/${VMX_DIR}
VMX_PATH=/vmfs/volumes/${VMFS_VOLUME}/${VMX_CONF}
fi
#checks to see if we can pull out the VM_ID
if [ -z ${VM_ID} ]; then
echo "Error: failed to extract VM_ID for ${MY_VMNAME}!"
Error: failed to extract VM_ID for test!
##########################################
Type: light
Virtual Machine: test vm
VM_ID: 16
VMX_PATH: /vmfs/volumes/datastore-1/New Virtual Machine/New Virtual Machine.vmx
VMX_DIR: /vmfs/volumes/datastore-1/New Virtual Machine
VMX_CONF: New Virtual Machine/New Virtual Machine.vmx
VMFS_VOLUME: datastore-1
##########################################
Error: failed to extract VM_ID for test1!
Error: failed to extract VM_ID for tesat2!
Error: failed to extract VM_ID for test3 und4 5!
Start time: Wed Nov 26 22:08:19 UTC 2008
End time: Wed Nov 26 22:08:19 UTC 2008
Duration : 0 Seconds
Completed backing up specified Virtual Machines!
${VMWARE_CMD} vmsvc/getallvms | sed 's/[[:blank:]]\{3,\}/ /g' | awk -F' ' '{print "\""$1"\";\""$2"\";\""$3"\""}' | sed 's/\] /\]\";\"/g' | sed '1,1d' > /tmp/vms_list
IFS=$'\n'
for VM_NAME in `cat "${VM_INPUT}" | sed '/^$/d' | sed -e 's/^[[:blank:]]*//;s/[[:blank:]]*$//'`;
do
VM_ID=`grep -E "\"${VM_NAME}\"" /tmp/vms_list | awk -F ";" '{print $1}' | sed 's/"//g'`
#ensure default value if one is not selected or variable is null
if [ -z ${VM_BACKUP_DIR_NAMING_CONVENTION} ]; then
VM_BACKUP_DIR_NAMING_CONVENTION="$(date +%F)"
fi
VMFS_VOLUME=`grep -E "\"${VM_NAME}\"" /tmp/vms_list | awk -F ";" '{print $3}' | sed 's/\[//;s/\]//;s/"//g'`
VMX_CONF=`grep -E "\"${VM_NAME}\"" /tmp/vms_list | awk -F ";" '{print $4}' | sed 's/\[//;s/\]//;s/"//g'`
VMX_PATH="/vmfs/volumes/${VMFS_VOLUME}/${VMX_CONF}"
VMX_DIR=`dirname "${VMX_PATH}"`
Online access to the latest VMworld Sessions & Labs and online services.
Learn morePurchase credits to redeem training and consulting services online.
Buy Now