1、linux命令模式下:vi /bin/ups.sh将下面的代码录入,
2、chmod 775 /bin/ups.sh 在linux命令模式下添加执行权限
3、vi /etc/rc.d/rc.local 在linux命令模式下用vi编辑rc.local启动文件, 把/bin/ups.sh &加到rc.local最后一行,&表示后台运行,注意前面空格。rc.local不能下载到windows下编辑,原理同第一条( vi编辑:按i 键编辑,按X键删除,再按ESC键退出编辑模式,再按 shift+: 出现:输入wq 回车保存退出)
在命令行下测试:
chmod 775 /bin/ups.sh 添加执行权限
/bin/ups.sh & 手动后台运行
ps -ef|grep ups.sh    看ups.sh运行起来没有
service network stop 停止网卡服务,开启网卡服务用:service network start 等看他重启不,如果重启了就正常了
注意:如果用ssh等远程连接linux打开以后,bash等都是他的子程序,一旦ssh关闭,系统将所有相关进程杀掉!! 导致一旦ssh关闭,执行中的任务就取消了。所以程序应当在真机上直接运行。
原理:系统每隔三分钟检测一个IP地址,比如路由器,交换机,如果这个地址,检测ping不通的情况下,系统会自动调用关机命令。
路由器和交换机不能外接UPS,否则起不到作用。
下面看程序代码:
#!/bin/sh          ; 这是一个shell脚本
while true      ;循环,实际上是一个死循环
do
ping -w 5 -c 1 192.168.1.1 > /dev/null      ;和路由器通信检测,路由器或者交换机都可,但是上面不能接UPS,修改为你自己的实际地址
ret=$?
if [ $ret -eq 0 ]                  ;判断是否成功,
then sleep 180                      ; 成功则睡眠3分钟,也就是说实现了三分钟检测一次
else
shutdown -h now                ;关机命令
fi
done                         
以上程序代码结束!
许多朋友说加上多点判断,只要嵌套几个IF语句就可以了!
#!/bin/sh
while true 
do
ping -w 5 -c 1 192.168.1.1 > /dev/null   
ret=$?
if [ $ret -eq 0 ] 
then    ;如果检测第一个地址,通,说明没有断电,睡眠二分钟
sleep 120
else    ;检测不通,进入检测第二个地址
ping -w 5 -c 1 192.168.1.251 > /dev/null    ; 检测第二个地址 ;
ret=$?
if [ $ret -eq 0 ]   
关机程序代码then    ;第二个地址通,就睡眠二分钟
sleep 120               
else
shutdown -h now  ;不通就关机
fi
fi
done                         

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。