Shutting down VMWare clients
In /etc/services on CLIENT:
# Local services shutdown 6666/tcp
In /etc/inetd.conf on CLIENT:
shutdown stream tcp nowait root /sbin/shutnow
In /sbin/shutnow of CLIENT: (you can prolly get rid of this and move this all into inetd.conf above, but I used to do other things too…)
#!/bin/bash /sbin/shutdown -h now
On the CLIENT's iptables rules, I have:
0 0 DROP tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:6666
So nobody can reach that port from eth1 (internet). The host will be hitting the port on eth2 which is the host-only virtual network.
Then on the HOST in /etc/init.d/kill_vms (new file):
#!/bin/sh # # chkconfig: 4 90 08 # description: Kills VMs on shutdown/reboot /usr/bin/telnet 192.168.90.201 6666 < /dev/zero PIDS=fake while [ "foo$PIDS" != "foo" ] do { echo "Delaying shutdown... VMWare still on $PIDS" sleep 10 PIDS=`pidof vmware-vmx` }; done
So then on the server you install the "kill_vms" with chkconfig (fix the IP from 192.168.90.201 to your virtual client IP of course!).
It won't work the first time you reboot, sorry. If you 'touch' the file /var/lock/subsys/kill_vms (at least on my ancient RH based system) then it should. Also, it will hang forever if you don't have the virtual machine set to 'Close on shutdown' and I think maybe another option in VMWare about closing if all clients close.
Comments
No comments.