ESXi的版本是6.7:)如果版本差异太大可能不适用。
- 首先是如何定时关机的问题
首先是关机的问题服务器系统不存在计划性关机的功能,只能通过脚本实现。 在esxi中不支持cron命令,只能直接编辑cron文件,文件文件的路径是: /var/spool/crontab/root 真接修改这个root文件意义并不大,因为一旦ESXi重启,这个文件会被重置。此时需要修改/etc/rc.local.d./local.sh,在exit 0这一行之前添加如下的脚本:
##以#开头的是注释行,可不添加 #get the cron service pid and kill it. #杀掉已经存在的cron进程 /bin/kill $(cat /var/run/crond.pid)
#add shutdown script to crontab(root) #修改/var/spool/crontab/root文件,增加相应的执行配置 #待修改的内容包括:
45 17 * * * 执行的时间,与cron相同,注意是UTC时间需换算
#/vmfs/volumnes/datastore1/autoshutdown.sh执行脚本路径 #注意一定要保存到datastore1这样的重启不会丢失的位置 #/var/spool/cron/crontabs/root是root用户cron配置文件位置,一般不用修改 /bin/echo ’45 17 * * * /vmfs/volumes/datastore1/autoshutdown.sh’ >> /var/spool/cron/crontabs/root
#restart cron service #重启cron进程(将加载修改后的root文件) /usr/lib/vmware/busybox/bin/busybox crond
注意注意注意 修改完/etc/rc.local.d./local.sh文件后,工作没有结束,需要执行一次/sbin/auto-backup.sh,将修改后的local.sh文件保存,否则结果将和之前的root文件一样,重启后丢失。
- 接下来是关机脚本的内容
#!/bin/sh
#shutdown all VMs(2,3,9 is VMID,add your VMIDs here) vim-cmd vmsvc/power.off 2 vim-cmd vmsvc/power.off 3 vim-cmd vmsvc/power.off 9
#Poweroff Host /sbin/poweroff
脚本中的vim-cmd vmsvc/power.off 2是关机命令,将对指定的虚拟机(VMID)发送关机命令,在宿主机关机前关闭所有虚拟机,这一操作是否有必要我不确定。我的ESXi上运行了NAS,为保护数据加这一段。 最后是关机命令。
后面查了一下,其实是有点画蛇添足了,因为poweroff就相当于直接拔插头……应该用power.shutdown,但是这个命令是异步的,后面直接跟/sbin/poweroff的话,效果未知:)
后面干脆改了,因为只有NAS是一直开机,其它虚拟机可能是不开机的,所以在NAS中自己定义的了一个计划性关机,这一部分相当于无效,可以只保留/sbin/poweroff。
附几个相关命令: vim-cmd vmsvc/getallvms 查询所有已配置的虚拟机,可获得VMID vim-cmd vmsvc/power.getstate VMID 通过VMID查询相应的虚拟机的当前状态(开关机) vim-cmd vmsvc/power.shutdown VMID发送关机信号(命令),但操作系统未必会真正关机。 vim-cmd vmsvc/power.off VMID 直接关机(相当于关电源)
- 开机:) 通过ESXi是不能实现开机,可以借助如下方案: BIOS如果支持定时开机,可以使用,就是需要修改配置时很麻烦。 BIOS中可设置断电后再恢复时自动开机,配合智能插座的定时通断电功能,实现定时开机。 注意:这个功能可能对某些主板是无效的!我目前使用的这个主板的设置就是:只有当意外断电(非正常关机)后断电再通电时自动启动,如果是正常关机后哪怕再断电通电也不会开机。 BIOS中可设置WOL唤醒,通过路由器等执行WOL唤醒脚本:)
(以上转自https://brallow.com/?p=631)
ESXI主机定时重启脚本 通过shell登陆ESXI主机,编辑脚本.完成定时重启物理主机.
1.开启主机的ssh功能。
2.编辑脚本如下.可以使用vi编辑.
#不需要的参数在前面加# 注释掉
#!/bin/sh
#设置天
sleep 3d
#设置小时
sleep 5h
#设置分钟
sleep 15m
#设置秒
sleep 23s
#关闭虚拟机
/bin/shutdown.sh
#执行重启
reboot
3.使用命令chmod +x给脚本一个执行权限