网上介绍的linux与ups的连接都不太实用,我在刚接触linux时,那是在4年前,独创一种简单有效的办法,就是根据网线的状态来判断是否需要关机。
原理:在掉电时,一般交换机不会被ups供电,此时网卡的状态就有link变成了unlink,如果几秒种之内没有恢复到link状态,就可以断定,市电已断。此时可以启动shutdown进程了。
这个shutdown放在哪里呢?有个很方便的地方,就是网卡的那些script,找到网卡down时调用的script,放在最后就行了。
在debian下,没有找到那些网卡的script,只好写了一个循环的一直运行的脚本,
检查一次网卡状态后就睡30秒,脚本如下:
/usr/sbin/ah_ups:
#!/bin/bash
while [ -z "`mii-tool |grep 'link ok'`" ]
do
sleep 10
done
echo link ok!
until [ -z "`mii-tool |grep 'link ok'`" ]
do
sleep 30
until [ -z "`mii-tool |grep 'link ok'`" ]
do
sleep 30
#cd /usr/local/softether
#nohup ./se_hub &
#ping -c1 -I 61.156.20.87 61.156.20.254 -c 1
done
done
poweroff
在/etc/init.d/做一个服务调用:
/etc/init.d/ups:
#!/bin/bash
#循环监测网卡状态,提供ups关机功能
http://anheng.com.cn/news/html/net_admin_blog/370.html
# 99-99
http://anheng.com.cn/news/html/net_admin_blog/370.html
nohup /usr/sbin/ah_ups &
http://anheng.com.cn/news/html/net_admin_blog/370.html
设置开机时运行上面的这个服务,行了。