[linux]-脚本实现虚拟机关机恢复快照并启动

导语:经常需要使用vmware exsi6上的虚拟机进行快照恢复纯净镜像进行测试,要关机恢复快照开机太麻烦了。

需要开启对应的远程权限,即可以ssh到vmware exsi的终端。

上脚本 最后通知的功能未完善。

#!/bin/sh
blue() {
  echo -e "\033[34m $(date +%Y%m%d_%H%M%S)>>>>>> $1 \033[0m"
}
green() {
  echo -e "\033[32m $(date +%Y%m%d_%H%M%S)>>>>>> $1 \033[0m"
}
red() {
  echo -e "\033[31m $(date +%Y%m%d_%H%M%S)>>>>>> $1 \033[0m"
}
yellow() {
  echo -e "\033[33m $(date +%Y%m%d_%H%M%S)>>>>>> $1 \033[0m"
}



yellow  ">>>>>input snap rollback machine IP (192.168.10.83)......"
read IP

# exsi open secur shell
vm_name=$IP
vm_id=`vim-cmd vmsvc/getallvms  |grep ${vm_name} |awk '{print $1}'`
get_vm_id(){
vim-cmd vmsvc/getallvms  |grep ${vm_name} |awk '{print $1"   "$2}' |awk -F, 'NR==1 {print "IP  ","  DEVICETYPE" } {gsub(/"/,""); print $1,$2}'
}
get_snapshot(){
vim-cmd vmsvc/snapshot.get ${vm_id}
}
ping_func(){
# ps | grep vmx |grep 192.168.10.81      # can kill process 
while  true 
do
  ping -c1 -W1 ${vm_name} 
  if [ $? -eq 0 ];then
    yellow "ping success ,machine is alive"
    red "going to shutdown ${vm_name}  "
    vim-cmd vmsvc/power.off  ${vm_id} &>/dev/null
    sleep 30
  else  
    break 
  fi
done 

while  true
do
  process_num=`ps | grep vmx |grep ${vm_name}|wc -l `
  yellow process_num ${process_num}
  if [ ${process_num} -ne 0 ];then
    yellow "machine is alive ,it has : ${process_num} proces"
    sleep 30
  else
    break
  fi
done

green "machine is down ,let's go"
}

roll_snapshot(){
yellow  ">>>>>input $vm_name snapshot id......"
read snapshot_id 
echo ' '

if [ ! -n "${snapshot_id}" ]; then
  red "id is null,please input $vm_name snapshot id......"
  roll_snapshot
fi
vim-cmd vmsvc/snapshot.revert  ${vm_id}   ${snapshot_id} suppressPowerOn
if [ $? -ne 0 ];then
  red "id is not exsist"
  get_snapshot
  roll_snapshot
fi
}

poweron(){
sleep 30
vim-cmd vmsvc/power.on   ${vm_id}
while  true
do
  ping -c1 -W1 ${vm_name}
  if [ $? -ne 0 ];then
    yellow "ping faile , machine is turning on"
    vim-cmd vmsvc/power.on   ${vm_id}
    sleep 30
  else
    break
  fi
done
}
email(){
# 测试22端口通了之后发送email通知。
echo "email "
}

get_vm_id
ping_func
get_snapshot
roll_snapshot
poweron
email


使用效果如下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爷来辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值