op-packages/luci-app-syncdial/root/bin/pppconnectcheck
github-actions[bot] 32600acc60 🌴 Sync 2026-03-05 23:51:42
2026-03-05 23:51:42 +08:00

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