mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-07-27 18:41:15 +08:00
64 lines
1.7 KiB
Bash
Executable File
64 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
#PPPoE拨号在线接口数检测及重拨脚本
|
|
. /lib/functions.sh
|
|
[ -f /etc/config/syncdial ] || {
|
|
return 1
|
|
}
|
|
#操作配置
|
|
#参数 $1 配置项
|
|
ifs_opt_down() {
|
|
local ifn=$1
|
|
local ifprefix=${ifn:0:4}
|
|
|
|
[ "$ifprefix" = "vwan" ] || return
|
|
ifdown $ifn
|
|
}
|
|
|
|
ifs_opt_up() {
|
|
local ifn=$1
|
|
local ifprefix=${ifn:0:4}
|
|
|
|
[ "$ifprefix" = "vwan" ] || return
|
|
ifup $ifn
|
|
}
|
|
|
|
config_load "syncdial"
|
|
config_get_bool dialchk config dialchk 0
|
|
config_get dial config dialnum
|
|
config_get dialwait config dialwait 20
|
|
config_get enabled config enabled 0
|
|
[ "$enabled" = "0" ] && {
|
|
echo "syncdial disabled."
|
|
return 0
|
|
}
|
|
[ "$dialchk" = "0" ] && {
|
|
echo "dial check disabled."
|
|
return 0
|
|
}
|
|
[ $(ps | grep -c "pppconnectcheck") -gt 3 ] && logger -t PPPoE-IFChecker "Another checker is running.exit." && return 1
|
|
|
|
PPPUPNUM=$(ifconfig | grep -c vwan)
|
|
logger -t PPPoE-IFChecker "$PPPUPNUM interfaces are online."
|
|
if [ ! "$PPPUPNUM" -lt $dial ]; then
|
|
interval="$(uci get mwan3.wan.failure_interval)"
|
|
cheng="$(uci get mwan3.wan.up)"
|
|
[ -z "$interval" ] && interval=5
|
|
[ -z "$cheng" ] && cheng=1
|
|
sleep $((interval*cheng+1))
|
|
PPPUPNUM=$(mwan3 interfaces | grep -c "is online")
|
|
[ "$PPPUPNUM" == "0" ] && (pgrep mwan3track || (logger -t PPPoE-IFChecker "mwan3track not running" ; return 1))
|
|
[ ! "$PPPUPNUM" -lt $dial ] && logger -t PPPoE-IFChecker "Nothing to do.Exit." && return 0
|
|
fi
|
|
logger -t PPPoE-IFChecker "Stop interfaces."
|
|
ifdown wan
|
|
config_load "network"
|
|
config_foreach ifs_opt_down "interface"
|
|
sleep $dialwait
|
|
logger -t PPPoE-IFChecker "Start interfaces."
|
|
config_foreach ifs_opt_up "interface"
|
|
ifup wan
|
|
logger -t PPPoE-IFChecker "Interfaces restarted."
|
|
logger -t PPPoE-IFChecker "Another checker will be started 15s later."
|
|
sleep 15 && pppconnectcheck &
|
|
return 0
|