停电后,在UPS电源下服务器自动关机脚本
发布时间:2020-12-15 07:11:59 所属栏目:安全 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #!/bin/sh# halt commandHALT=haltping_forever_host(){ IP=$1 time_out=$2 count=3 kernel=`uname -s` total_miss=0 echo "ups check host '${IP}' f
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 #!/bin/sh # halt command HALT=halt ping_forever_host(){ IP=$1 time_out=$2 count=3 kernel=`uname -s` total_miss=0 echo "ups check host '${IP}' for (${time_out}) seconds,[forever mode]" # ping host,if miss recieved packets,then add to total_miss while true do case $kernel in VMkernel) #esxi 5.1 ret=`ping -c ${count} -W 1 ${IP} 2>&1|grep 'packets transmitted'|sed 's/.*,(.*) packets received,.*/1/'` ;; Darwin) #MacOS X 10.7.4 ret=`ping -c ${count} -W 1 ${IP} 2>&1|grep 'packets transmitted'|sed 's/.*,.*/1/'` ;; Linux) #ubuntu 12.04 ret=`ping -c ${count} -W 1 ${IP} 2>&1|grep 'packets transmitted'|sed 's/.*,(.*) received,.*/1/'` ;; *) echo "Unknown Architecture $kernel" exit 1 ;; esac miss=$((count-ret)) if [ $miss -eq $count ]; then total_miss=$((total_miss+miss)) echo "total_miss: ${total_miss} --> ${time_out}" else total_miss=0 fi # if miss count over limit,then halt the computer!!! if [ $total_miss -ge $time_out ]; then echo "SYSTEM WILL HALT AT '`date`'!!!" ${HALT} break; fi done } ping_once_host(){ IP=$1 count=$2 time_out=$2 kernel=`uname -s` total_miss=0 echo "ups check host '${IP}' for (${time_out}) seconds,[once mode]" # ping host,then add to total_miss case $kernel in VMkernel) #esxi 5.1 ret=`ping -c ${count} -W 1 ${IP} 2>&1|grep 'packets transmitted'|sed 's/.*,.*/1/'` ;; Darwin) #MacOS X 10.7.4 ret=`ping -c ${count} -W 1 ${IP} 2>&1|grep 'packets transmitted'|sed 's/.*,.*/1/'` ;; Linux) #ubuntu 12.04 ret=`ping -c ${count} -W 1 ${IP} 2>&1|grep 'packets transmitted'|sed 's/.*,.*/1/'` ;; *) echo "Unknown Architecture $kernel" exit 1 ;; esac miss=$((count-ret)) if [ $miss -eq $count ]; then total_miss=$((total_miss+miss)) echo "total_miss: ${total_miss} --> ${time_out}" else total_miss=0 fi # if miss count over limit,then halt the computer!!! if [ $total_miss -ge $time_out ]; then echo "SYSTEM WILL HALT AT '`date`'!!!" ${HALT} fi } main(){ action=$1; case $action in forever) #run forever ping_forever_host $2 $3 ;; once) # run once ping_once_host $2 $3 ;; *) echo "usage: sudo ./ups_check forever 192.168.2.1 120" echo "usage: sudo ./ups_check once 192.168.2.1 60" exit 1 ;; esac } main $1 $2 $3 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |