|

楼主 |
发表于 2007-1-4 10:17:33
|
显示全部楼层
写好了,大家帮忙看看,其实这个shell是解决前段时间求助未果的一个问题,见:
http://www.linuxsir.cn/bbs/showthread.php?t=287313
解决思路如下:
将scripts写入crontab,每5分钟check一次,如果遇到上面问题,则kill掉pppoe-server进程,重启adsl-ppp0端口,再重启pppoe-server
配置如下:
计划任务:
[root@sg tmp]# grep 'adsl' /etc/crontab
05 * * * * root /usr/local/sbin/auto-connect-adsl > /dev/null 2>&1
自动运行scripts,谢谢seamonkey兄提示,并且优化了一下,(感觉nslookup太耗时,如果adsl.pid文件存在,则表示adsl已连接,实现目地一样),如下:
*******************************************************
[root@sg sbin]# cat /usr/local/sbin/auto-connect-adsl
#!/bin/bash
# This file should not be modified -- make local changes to
# /usr/local/sbin/auto-conect-adsl instead
# TMeng first release
# Modify by TMeng at 2007/01/03/PM 15:14
# Used for auto-connect-adsl when pppoe-server assign pppo to local user
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin
export PATH
#
# test crontab jobs are or not running
if ps aux |grep 'auto-connect-adsl'|grep -v 'grep' > /dev/null 2>&1;then
exit 0
# test adsl-connection
# if failed wait 2m,
elif [ ! -f /var/run/pppoe-adsl.pid ];then
sleep 2m &
# if failed ,kill "pppoe-client" connection
elif [ ! -f /var/run/pppoe-adsl.pid ] ;then
kill -15 `ps aux |grep 'ppp'|grep -v 'grep'|\
awk '{ print $2 }'|grep -v 'awk'`
# up pppo interface
/sbin/ifup ppp0 || ifup ppp0 || ifup ppp0
/usr/sbin/pppoe-server -I eth1 -L 192.168.3.254 -R 192.168.3.1
/sbin/service iptables restart > /dev/null 2>&1
fi
#
exit 0
*******************************************************
如有更好的办法,请坛上的DX不涩赐教,不胜感激,谢谢!! |
|