视频简介:
ESXI虚拟机系统是一个高效的企业级的商业软件,既然是企业级少不了断电保护,但是需求的UPS的硬件要求也很高,一般普通UPS不在支持列表,所以只能曲线救国。
一、登陆ESXI的SSH创建文件夹及脚本
1.进入磁盘目录
cd vmfs/volumes
ls
我的硬盘名称为datastore1
2.进入硬盘目录
cd datastore1
ls
此时显示的是我们目前所有的虚拟机目录
3.创建一个ups目录,并进入ups目录
mkdir ups
cd ups
4.创建apc.sh脚本
vi apc.sh
里面填入脚本代码
i
#!/bin/sh
while
ping -c 1 12.12.12.252 > /dev/null
[ $? -eq 0 ];
do
#echo ' AC Power OK ! ' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log
sleep 180
done
echo ' AC Power maybe off, checking again after 3 minutes ! ' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log
sleep 180
ping -c 1 12.12.12.252 > /dev/null
if [ $? -eq 0 ]
then
echo ' Checkagain, AC Power OK ! ' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log
else
echo ' AC Power is already off, shut down NAS Now! ' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log
/bin/shutdown.sh
halt
fi
代码中的12.12.12.252 改为你要Ping的网关地址,datastore1 部分的改为你的硬盘名称,默认的都是这个
按esc键退出编辑模式
:wq
然后赋予权限
chmod 777 apc.sh
二、创建空白的日志文件ups.log
同样的在第一步所创建的ups目录里面创建
vi ups.log
:wq
同样赋予权限
chmod 777 ups.log
三、可以临时测试下脚本是否生效
进入到ups目录
cd vmfs/volumes/datastore1/ups
./apc.sh
不显示任何内容就代表在运行了
然后这个ssh界面保持不动 从新打开一个,检测下是否运行成功,输入命令
ps -c | grep apc.sh | grep -v grep |wc -l
反馈的是1 代表脚本启动成功,反馈的是0 代表没有启动成功
四、添加守护进程代码
同样进入到ups目录
cd vmfs/volumes/datastore1/ups
vi ups_shouhu.sh
i
里面填入如下代码
# 获取ups进程数量
NUM=`ps -c | grep apc.sh | grep -v grep |wc -l`
echo ${NUM}
# 少于1,重启进程
if [ "${NUM}" -lt "1" ];then
/vmfs/volumes/datastore1/ups/apc.sh &
echo ' UPS shouhu start' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log
fi
exit 0
按esc退出编辑模式
:wq
同样赋予权限
chmod 777 ups_shouhu.sh
五、然后添加一个计划任务,每三分钟执行守护脚本
vi /etc/rc.local.d/local.sh
默认打开是这样的,把里面的内容全部清空
然后填入如下代码
/bin/kill $(cat /var/run/crond.pid)
/bin/echo '*/3 * * * * /vmfs/volumes/datastore1/ups/ups_shouhu.sh' >> /var/spool/cron/crontabs/root
/bin/crond
exit 0
六、然后从起ESXI主机,再执行命令验证下脚本是否运行
ps -c | grep apc.sh | grep -v grep |wc -l
反馈的是1 代表脚本启动成功,反馈的是0 代表没有启动成功
七、自动开机脚本
下面记录一下自动开机,如果路由器发现服务器不在线,就执行wol唤醒服务器
路由器创建一个计划任务,每三分钟执行,里面的12.12.12.254 IP修改为你的ESXI的后台地址
#Power for ESXI
ping -c 10 -w 12.12.12.254 > /dev/null
ret=$?
if [ $ret -ne 0 ]
then
ether-wake XX:XX:XX:XX:XX:XX
fi
大佬可以出个PVE这种ping不通关机的教程吗
到第6步,输入ps -c | grep apc.sh | grep -v grep |wc -l ,显示0,重启后脚本没有运行。是esxi版本6.5的问题?还是esxi时间不同步问题?谢谢解答。
運行ps -c | grep apc.sh | grep -v grep |wc -l 確實是1了。
測試esxi6.7網試拔除或斷網(這個測試方法是對的吧),但並不能關機群晖! 要群晖安裝vmware tools嗎?
log:
UPS shouhu start
Thu Mar 18 11:30:01 UTC 2021
ok, 測試成功啦。 是ip的問題。
测试了一下,似乎
/bin/shutdown.sh
halt
不能完美关机群晖。重新开机后群晖会显示上一次非正常关机的警告。
群晖上已经安装了 open-vm-tools
很苦恼…
请问ether-wake XX:XX:XX:XX:XX:XX这一行不用改自己的MAC地址吗?
测试的时候过了3分钟系统没有关机,但是日志已经有了
AC Power maybe off, checking again after 3 minutes !
麻烦帮我看看是不是我的脚本哪里出错了,我的系统是6.7版本的
第二次显示AC Power maybe off,才会关机 那个.sh文件里有两个ip要改,你可能只改了一个
大神第7步的自动开机设置能不能给个详细步骤
这个要看你的WIFI路由器有没有root权限 没有的用不了
第四部守护进程代码,第一行确定不用加#号备注吗?直接”获取ups进程数量”而不是“#获取ups进程数量”?
有#号备注的
来电自 启动的脚本呢?
第七点