Very nice. But essentially this is just a shutdown command. What will trigger it to run?
Jim Willeke wrote:
For VMWare this script should work. ##################################################################### #!/bin/sh # # UPS shutdown script for VMware ESX 3.0 # ##################################################################### # set the paths that the vmware tools need PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin" ##################################################################### # try do a nice shutdown of VM there is power count_vm_on=0 for vm in `vmware-cmd -l` ; do #echo "VM: " $vm for VMstate in `vmware-cmd "$vm" getstate` ; do #echo $VMstate # If the VM is power ON if [ $VMstate = "on" ] ; then echo " " echo "VM: " $vm echo "State: is on and will now tell it to shut down" echo "Shutting down: " $vm vmware-cmd "$vm" stop trysoft vmwarecmd_exitcode=$(expr $?) if [ $vmwarecmd_exitcode -ne 0 ] ; then echo "exitcode: $vmwarecmd_exitcode so will now turn it off hard" vmware-cmd "$vm" stop hard fi count_vm_on=$count_vm_on+1 sleep 2 # if the VM is power OFF elif [ $VMstate = "off" ] ; then echo " " echo "VM: " $vm echo "State: is off, so i skip it" # if the VM is power suspended elif [ $VMstate = "suspended" ] ; then echo " " echo "VM: " $vm echo "State: is suspended, so i skip it" # if state is getstate or = else printf "" #echo "unknown state: " $VMstate fi done done ######################################################################## # wait for up to 5 min for the VM to shutd # if [ $count_vm_on = 0 ] ; then echo " " echo "All VM is off or suspended" else echo " " vm_time_out=300 count_vm_on=0 echo "Waiting for VMware virtual machines." for (( second=0; second<$vm_time_out; second=second+5 )); do sleep 5 printf "." count_vm_on=0 for vm in `vmware-cmd -l` ; do for VMstate in `vmware-cmd "$vm" getstate` ; do if [ $VMstate = "on" ] ; then count_vm_on=$(expr $count_vm_on + 1) fi done done if [ $count_vm_on = 0 ] ; then #echo "exit for" break fi done #echo $VMstate fi #echo $count_vm_on ##################################################################### # checking if all the VM are off and if not then turn them off for vm in `vmware-cmd -l` ; do #echo "VM: " $vm for VMstate in `vmware-cmd "$vm" getstate` ; do # If the VM is power ON if [ $VMstate = "on" ] ; then echo " " echo "Found this VM: " $vm echo "it is stille on but now i will turn it off" vmware-cmd "$vm" stop hard sleep 2 fi done done ##################################################################### # Will now shutdown the ESX server as all VM are now off echo " " echo "now all VM is down, so will shutdown ESX host now" echo " " shutdown -h now -jim Phone: 419.564.7692 Email: jim@xxxxxxxxxxx IM: jim@xxxxxxxxxxx (on MSN) IM: jwilleke@xxxxxxxxx (on GOOGLE) IM: jwilleke (on Yahoo) IM: jeemster (on AIM) My LinkedIn: http://www.linkedin.com/in/jwilleke larry wrote:No, the guests do NOT "shut down cleanly" just because you stopped or shut down the hypervisor.You want to talk about "standards" in regard to UPS signaling behaviour?! Which of the dozen or so standards would you like to discuss?Mike wrote:Chuck Stickelman wrote:So what I hear you say is: Hook the UPS to the physical machine Have the host OS monitor the UPS's stateWhen the UPS signals the host it sends a SIGHUP to the Virtual MachinesThe VMs should then interpret the SIGHUP as a Shutdown command Is that what you had in mnd? Does anyone know if that's how it works? ChuckYes.The signal may depend on the VM design though. I would hope they have used enough sense to honor some standard.This really is a near trivial problem. The guests shutdown cleanly during a normal shutdown, yes? Why should a shutdown instituted by UPS software or even admin written (monitoring) scripts be any different?MikeTo unsubscribe send to ncolug-request@xxxxxxxxxxxxx with 'unsubscribe' in the Subject field.
--"Perception is strong and sight weak. In strategy it is important to see distant things as if they were close and to take a distanced view of close things." Miyamoto Musashi (1584-1645)
To unsubscribe send to ncolug-request@xxxxxxxxxxxxx with 'unsubscribe' in the Subject field.