WMware ESXI - suspend all guests
I have an VMware ESXI 5 which I used for testing things, but I don't want it to run all the time, and using the vSphere Client to stop all the VM's and then stop the ESXI server is a bit too much effort.
So I figured out how to do it from the commandline using 'vim-cmd'.
This is working just fine, until one discovers the there is no where to store files on the ESXI servers file system without having to restore them after a reboot.
A bit of googing gave me an answer, create a directory in one of the datastores and save it there.
Like in '/vmfs/volumes/datastore1/scripts/', where it will stay after a reboot.
Now to wake the host again, requires that one enable wake-on-lan (wake on PCI and PCIe normally should do it), and then use the wakelan / wol utility;
This it's possible to hide ones noisy computers somewhere far far away.
So I figured out how to do it from the commandline using 'vim-cmd'.
#/bin/sh
VMS=`vim-cmd vmsvc/getallvms | grep -v Vmid | awk '{print $1}'`
for VM in $VMS ; do
PWR=`vim-cmd vmsvc/power.getstate $VM | grep -v "Retrieved runtime info"`
if [ "$PWR" == "Powered on" ] ; then
name=`vim-cmd vmsvc/get.config $VM | grep -i "name =" | awk '{print $3}' | head -1 | cut -d """ -f2`
echo "Powered on: $name"
echo "Suspending: $name"
vim-cmd vmsvc/power.suspend $VM > /dev/null &
fi
done
while true ; do
RUNNING=0
for VM in $VMS ; do
PWR=`vim-cmd vmsvc/power.getstate $VM | grep -v "Retrieved runtime info"`
if [ "$PWR" == "Powered on" ] ; then
echo "Waiting..."
RUNNING=1
fi
done
if [ $RUNNING -eq 0 ] ; then
echo "Gone..."
break
fi
sleep 1
done
echo "Now we suspend the Host..."
vim-cmd hostsvc/standby_mode_enter
This is working just fine, until one discovers the there is no where to store files on the ESXI servers file system without having to restore them after a reboot.
A bit of googing gave me an answer, create a directory in one of the datastores and save it there.
Like in '/vmfs/volumes/datastore1/scripts/', where it will stay after a reboot.
Now to wake the host again, requires that one enable wake-on-lan (wake on PCI and PCIe normally should do it), and then use the wakelan / wol utility;
# wol <mac addr>
This it's possible to hide ones noisy computers somewhere far far away.
Comments
exactly what I needed to shut down my esxi 5.5 with an UPS
and may be i help some one.
How connect to ssh from windows and run command
download plink and run command
plink.exe -ssh <username> -pw password /vmfs/volumes/5370dd8b-284e8baf-31ab-002421a85c91/scripts/suspend.sh