#!/bin/zsh
export vmname=$1
if [ -z $vmname ];then
echo usage: $0 \<vm name\>
exit 1
fi
export startport=`cat /home/vmuser/$vmname/$vmname.vars|grep -w port|head -n 1|cut -f 2 -d \=`
if [ -f /usr/share/webapps/vmlab/$vmname/sessid.$vmname ];then
export len=`cat /usr/share/webapps/vmlab/$vmname/sessid.$vmname|wc -l`
export counter=$(($len-1))
else
export counter=-1
fi
if [ -f /usr/share/webapps/vmlab/$vmname/newsess.$vmname ];then
export counter=$(($counter+1))
echo start session number $counter
systemctl start vms@$vmname@$counter
sleep 30
fi
if [ -f /usr/share/webapps/vmlab/$vmname/sessid.$vmname ];then
for f in `cat /usr/share/webapps/vmlab/$vmname/sessid.$vmname 2>/dev/null`;do
if [ `netstat -an|grep -w $f|wc -l` -gt 1 ];then
continue
else
export ln=`grep -nw $f /usr/share/webapps/vmlab/$vmname/sessid.$vmname|cut -f 1 -d :`
export port=$(($f-5900-$startport))
echo stop session number $port
systemctl stop vms@$vmname@$port
if pgrep -af websockify|grep -w $port;then
if pgrep -af qemu|grep -w port=$(($port-5900));then
true
else
systemctl stop vmws@$vmname@$port
fi
fi
fi
done
else
sleep 1
fi
for dir in `find /home/vmuser -maxdepth 1 -type d -empty|grep $vmname`;do
rmdir $dir
done
