月下博客

【Padavan脚本】老毛子固件路由器修改网络状态指示灯颜色,跑马灯LED mtk_gpio颜色代码

老毛子固件风骚网络状态指示灯
【袋鼠】LED灯控制,开机红灯,动态监测,联网绿灯,绿灯根据网速闪烁,断网红灯

老毛子固件修改网络状态指示灯颜色设置

1、自定义设置—网络监测—监测模式—持续监测

2、在最底下点开在网络访问状态改变时运行脚本

3、在最底下加入以下代码

4、加入以下代码:

if [ $1 == "0" ] ; then

# 网络不通
        mtk_gpio -d 9 1
        
        mtk_gpio -d 9 0
        
        mtk_gpio -d 9 1
        
        logger -t "【网络检测】" "网络已断开,红灯!"
        
else

# 网络通
        mtk_gpio -d 9 0
        
        mtk_gpio -d 9 1
        
        mtk_gpio -d 9 0
        
        logger -t "【网络检测】" "网络已连接,绿灯!"
fi

或者直接复制粘贴整段代码,代码有改动:

#!/bin/sh
#/etc/storage/inet_state_script.sh
### Custom user script
### Called on Internet status changed
### $1 - Internet status (0/1)
### $2 - elapsed time (s) from previous state
#copyright by hiboy
logger -t "【网络检测】" "互联网状态:$1, 经过时间:$2s."
# 【自动切换中继信号】功能 需要到【无线网络 - 无线桥接】页面配置
. /etc/storage/ap_script.sh
baidu='http://gb.corp.163.com/gb/images/spacer.gif'
aptimes=$1
if [ $((aptimes)) -gt "9" ] ; then
    mtk_gpio -d 9 1
    mtk_gpio -d 9 0
    mtk_gpio -d 9 1
    logger -t "【网络检测】" "网络已断开,红灯!"
    logger -t "【连接 AP】" "$1秒后, 自动搜寻 ap"
    sleep $1
else
    logger -t "【连接 AP】" "10秒后, 自动搜寻 ap"
    sleep 10
fi
cat /tmp/ap2g5g.txt | grep -v '^#'  | grep -v "^$" > /tmp/ap2g5g
if [ ! -f /tmp/apc.lock ] && [ "$1" != "1" ] && [ -s /tmp/ap2g5g ] ; then
    touch /tmp/apc.lock
    a2=`iwconfig apcli0 | awk -F'"' '/ESSID/ {print $2}'`
    a5=`iwconfig apclii0 | awk -F'"' '/ESSID/ {print $2}'`
    [ "$a2" = "" -a "$a5" = "" ] && ap=1 || ap=0
    if [ "$ap" = "1" ] || [ "$2" = "t" ] && [ -f /tmp/apc.lock ] ; then
        #搜寻开始/tmp/ap2g5g
        while read line
        do
        c_line=`echo $line | grep -v '^#' | grep -v "^$"`
        if [ ! -z "$c_line" ] ; then
            apc=$line
            radio=$(echo $apc | cut -d $fenge -f1)
            
            # ApCli 2.4Ghz
            if [ "$radio" = "2" ] ; then
                rtwlt_mode_x=`nvram get rt_mode_x`
            else
                rtwlt_mode_x=`nvram get wl_mode_x`
            fi
            # [ "$rtwlt_mode_x" = "3" ] || [ "$rtwlt_mode_x" = "4" ] &&
            
            rtwlt_mode_x=$(echo $apc | cut -d $fenge -f2)
            rtwlt_sta_wisp=$(echo $apc | cut -d $fenge -f3)
            rtwlt_sta_ssid=$(echo $apc | cut -d $fenge -f4)
            rtwlt_sta_wpa_psk=$(echo $apc | cut -d $fenge -f5)
            rtwlt_sta_bssid=$(echo $apc | cut -d $fenge -f6 | tr 'A-Z' 'a-z')
            if [ "$radio" = "2" ] ; then
                ap=`iwconfig | grep 'apcli0' | grep ESSID:"$rtwlt_sta_ssid" | wc -l`
                if [ "$ap" = "0" ] ; then
                    ap=`iwconfig |sed -n '/apcli0/,/Rate/{/apcli0/n;/Rate/b;p}' | grep $rtwlt_sta_bssid | tr 'A-Z' 'a-z' | wc -l`
                fi
            else
                ap=`iwconfig | grep 'apclii0' | grep ESSID:"$rtwlt_sta_ssid" | wc -l`
                if [ "$ap" = "0" ] ; then
                    ap=`iwconfig |sed -n '/apclii0/,/Rate/{/apclii0/n;/Rate/b;p}' | grep $rtwlt_sta_bssid | tr 'A-Z' 'a-z' | wc -l`
                fi
            fi
            
            if [ "$ap" = "1" ] ; then
                logger -t "【连接 AP】" "当前是 $rtwlt_sta_ssid, 停止搜寻"
                rm -f /tmp/apc.lock
                if [ $((aptime)) -ge "9" ] ; then
                    /etc/storage/inet_state_script.sh $aptime "t" &
                    sleep 2
                    logger -t "【连接 AP】" "直到连上最优先信号 $(echo $(grep -v '^#' /tmp/ap2g5g | grep -v "^$" | head -1) | cut -d $fenge -f4)"
                fi
                exit
            else
                logger -t "【连接 AP】" "自动搜寻 $rtwlt_sta_ssid"
            fi
            if [ "$radio" = "2" ] ; then
            # ApCli 2.4Ghz
            iwpriv apcli0 set SiteSurvey=1
                if [ ! -z "$rtwlt_sta_bssid" ] ; then
                    logger -t "【连接 AP】" "自动搜寻 $rtwlt_sta_ssid:$rtwlt_sta_bssid"
                    site_survey=$(iwpriv apcli0 get_site_survey | sed -n "/$rtwlt_sta_bssid/p" | tr 'A-Z' 'a-z')
                else
                    site_survey=$(iwpriv apcli0 get_site_survey | sed -n "/$rtwlt_sta_ssid/p" | tr 'A-Z' 'a-z')
                fi
            else
                iwpriv apclii0 set SiteSurvey=1
                if [ ! -z "$rtwlt_sta_bssid" ] ; then
                    logger -t "【连接 AP】" "自动搜寻 $rtwlt_sta_ssid:$rtwlt_sta_bssid"
                    site_survey=$(iwpriv apclii0 get_site_survey | sed -n "/$rtwlt_sta_bssid/p" | tr 'A-Z' 'a-z')
                else
                    site_survey=$(iwpriv apclii0 get_site_survey | sed -n "/$rtwlt_sta_ssid/p" | tr 'A-Z' 'a-z')
                fi
            fi
            if [ -z "$site_survey" ] ; then
                logger -t "【连接 AP】" "没找到 $rtwlt_sta_ssid, 如果含中文请填写正确的MAC地址"
                ap3=1
            fi
            if [ ! -z "$site_survey" ] ; then
                Ch=${site_survey:0:4}
                SSID=${site_survey:4:33}
                BSSID=${site_survey:37:20}
                Security=${site_survey:57:23}
                Signal=${site_survey:80:9}
                WMode=${site_survey:89:7}
                ap3=0
            fi
            if [ "$apblack" = "1" ] ; then
                apblacktxt=$(grep "【SSID:$rtwlt_sta_bssid" /tmp/apblack.txt)
                if [ ! -z $apblacktxt ] ; then
                    logger -t "【连接 AP】" "当前是黑名单 $rtwlt_sta_ssid, 跳过黑名单继续搜寻"
                    ap3=1
                else
                    apblacktxt=$(grep "【SSID:$rtwlt_sta_ssid" /tmp/apblack.txt)
                    if [ ! -z $apblacktxt ] ; then
                        logger -t "【连接 AP】" "当前是黑名单 $rtwlt_sta_ssid, 跳过黑名单继续搜寻"
                        ap3=1
                    fi
                fi
            fi
            if [ "$ap3" != "1" ] ; then
                if [ "$radio" = "2" ] ; then
                    nvram set rt_channel=$Ch
                    iwpriv apcli0 set Channel=$Ch
                else
                    nvram set wl_channel=$Ch
                    iwpriv apclii0 set Channel=$Ch
                fi
                if [[ $(expr $Security : ".*none*") -gt "1" ]] ; then
                    rtwlt_sta_auth_mode="open"
                    rtwlt_sta_wpa_mode="0"
                fi
                if [[ $(expr $Security : ".*1psk*") -gt "1" ]] ; then
                    rtwlt_sta_auth_mode="psk"
                    rtwlt_sta_wpa_mode="1"
                fi
                if [[ $(expr $Security : ".*2psk*") -gt "1" ]] ; then
                    rtwlt_sta_auth_mode="psk"
                    rtwlt_sta_wpa_mode="2"
                fi
                if [[ $(expr $Security : ".*wpapsk*") -gt "1" ]] ; then
                    rtwlt_sta_auth_mode="psk"
                    rtwlt_sta_wpa_mode="1"
                fi
                if [[ $(expr $Security : ".*tkip*") -gt "1" ]] ; then
                    rtwlt_sta_crypto="tkip"
                fi
                if [[ $(expr $Security : ".*aes*") -gt "1" ]] ; then
                    rtwlt_sta_crypto="aes"
                fi
                if [ "$radio" = "2" ] ; then
                    nvram set rt_mode_x=$rtwlt_mode_x
                    nvram set rt_sta_wisp=$rtwlt_sta_wisp
                    nvram set rt_sta_ssid=$rtwlt_sta_ssid
                    nvram set rt_sta_auth_mode=$rtwlt_sta_auth_mode
                    nvram set rt_sta_wpa_mode=$rtwlt_sta_wpa_mode
                    nvram set rt_sta_crypto=$rtwlt_sta_crypto
                    nvram set rt_sta_wpa_psk=$rtwlt_sta_wpa_psk
                    #强制20MHZ
                    nvram set rt_HT_BW=0
                else
                    nvram set wl_mode_x=$rtwlt_mode_x
                    nvram set wl_sta_wisp=$rtwlt_sta_wisp
                    nvram set wl_sta_ssid=$rtwlt_sta_ssid
                    nvram set wl_sta_auth_mode=$rtwlt_sta_auth_mode
                    nvram set wl_sta_wpa_mode=$rtwlt_sta_wpa_mode
                    nvram set wl_sta_crypto=$rtwlt_sta_crypto
                    nvram set wl_sta_wpa_psk=$rtwlt_sta_wpa_psk
                fi
                logger -t "【连接 AP】" "$rtwlt_mode_x $rtwlt_sta_wisp $rtwlt_sta_ssid $rtwlt_sta_auth_mode $rtwlt_sta_wpa_mode $rtwlt_sta_crypto $rtwlt_sta_wpa_psk"
                nvram commit
                #restart_wan
                #sleep 10
                radio2_restart
                #sleep 4
                #if [ "$radio" = "2" ] ; then
                    #iwpriv apcli0 set ApCliEnable=0
                    #iwpriv apcli0 set ApCliAutoConnect=1
                #else
                    #iwpriv apclii0 set ApCliEnable=0
                    #iwpriv apclii0 set ApCliAutoConnect=1
                #fi
                sleep 15
                logger -t "【连接 AP】" "【Ch:$Ch】【SSID:$SSID】【BSSID:$BSSID】"
                logger -t "【★连接 AP】" "【Security:$Security】【Signal(%):$Signal】【WMode:$WMode】"
                if [ "$radio" = "2" ] ; then
                    ap=`iwconfig | grep 'apcli0' | grep 'ESSID:""' | wc -l`
                else
                    ap=`iwconfig | grep 'apclii0' | grep 'ESSID:""' | wc -l`
                fi
                if [ "$ap" = "0" ] && [ "$apauto2" = "1" ] ; then
                    ping_text=`ping -4 114.114.114.114 -c 1 -w 2 -q`
                    ping_time=`echo $ping_text | awk -F '/' '{print $4}'| awk -F '.' '{print $1}'`
                    ping_loss=`echo $ping_text | awk -F ', ' '{print $3}' | awk '{print $1}'`
                    if [ ! -z "$ping_time" ] ; then
                        echo "ping:$ping_time ms 丢包率:$ping_loss"
                     else
                        echo "ping:失效"
                    fi
                    if [ ! -z "$ping_time" ] ; then
                        logger -t "【★连接 AP】" "$ap 已连接上 $rtwlt_sta_ssid, 成功联网"
                        # 网络通
                        mtk_gpio -d 9 0
                        mtk_gpio -d 9 1
                        mtk_gpio -d 9 0
                        logger -t "【网络检测】" "网络已连接,绿灯!"
                        ap=0
                    else
                        ap=1
                        logger -t "【连接 AP】" "$ap 已连接上 $rtwlt_sta_ssid, 但未联网, 跳过继续搜寻"
                    fi
                fi
                if [ "$ap" = "1" ] ; then
                    logger -t "【连接 AP】" "$ap 无法连接 $rtwlt_sta_ssid"
                else
                    logger -t "【连接 AP】" "$ap 已连接上 $rtwlt_sta_ssid"
                    if [ "$apblack" = "1" ] ; then
                        ping_text=`ping -4 114.114.114.114 -c 1 -w 2 -q`
                        ping_time=`echo $ping_text | awk -F '/' '{print $4}'| awk -F '.' '{print $1}'`
                        ping_loss=`echo $ping_text | awk -F ', ' '{print $3}' | awk '{print $1}'`
                        if [ ! -z "$ping_time" ] ; then
                            echo "ping:$ping_time ms 丢包率:$ping_loss"
                         else
                            echo "ping:失效"
                        fi
                        if [ ! -z "$ping_time" ] ; then
                        echo "online"
                        else
                            apblacktxt="$ap AP不联网列入黑名单:【Ch:$Ch】【SSID:$SSID】【BSSID:$BSSID】【Security:$Security】【Signal(%):$Signal】【WMode:$WMode】"
                            logger -t "【连接 AP】" "$apblacktxt"
                            echo $apblacktxt >> /tmp/apblack.txt
                            rm -f /tmp/apc.lock
                            /etc/storage/inet_state_script.sh 0 "t" &
                            sleep 2
                            logger -t "【连接 AP】" "跳过黑名单继续搜寻, 直到连上最优先信号 $(echo $(grep -v '^#' /tmp/ap2g5g | grep -v "^$" | head -1) | cut -d $fenge -f4)"
                            exit
                        fi
                    fi
                    if [ "$rtwlt_sta_ssid" = $(echo $(grep -v '^#' /tmp/ap2g5g | grep -v "^$" | head -1) | cut -d $fenge -f4) ] ; then
                        logger -t "【连接 AP】" "当前是 $rtwlt_sta_ssid, 停止搜寻"
                        rm -f /tmp/apc.lock
                        logger -t "【连接 AP】" "当前连上最优先信号 $rtwlt_sta_ssid"
                        logger -t "【★】" "【信号强度】【Signal(%):$Signal】"
                        # 网络通
                        mtk_gpio -d 9 0
                        mtk_gpio -d 9 1
                        mtk_gpio -d 9 0
                        logger -t "【网络检测】" "网络已连接,绿灯!"
                        exit
                    else
                        rm -f /tmp/apc.lock
                        if [ $((aptime)) -ge "9" ] ; then
                            /etc/storage/inet_state_script.sh $aptime "t" &
                            sleep 2
                            logger -t "【连接 AP】" "直到连上最优先信号 $(echo $(grep -v '^#' /tmp/ap2g5g | grep -v "^$" | head -1) | cut -d $fenge -f4)"
                            mtk_gpio -d 9 1
                            mtk_gpio -d 9 0
                            mtk_gpio -d 9 1
                            logger -t "【网络检测】" "网络已断开,红灯!"
                        fi
                        exit
                    fi
                fi
            fi
            sleep 5
        fi
        a2=`iwconfig apcli0 | awk -F'"' '/ESSID/ {print $2}'`
        a5=`iwconfig apclii0 | awk -F'"' '/ESSID/ {print $2}'`
        [ "$a2" = "" -a "$a5" = "" ] && ap=1 || ap=0
        sleep 2
        done < /tmp/ap2g5g
        sleep 60
        rm -f /tmp/apc.lock
        if [ "$ap" = "1" ] || [ "$2" = "t" ] && [ -f /tmp/apc.lock ] ; then
            #搜寻开始/tmp/ap2g5g
            /etc/storage/inet_state_script.sh 0 "t" &
            sleep 2
            logger -t "【连接 AP】" "继续搜寻"
            exit
        fi
        sleep 1
    fi
    rm -f /tmp/apc.lock
    sleep 1
fi
killall sh_apauto.sh
if [ -s /tmp/ap2g5g ] ; then
    /tmp/sh_apauto.sh &
else
    echo "" > /tmp/apauto.lock
fi
logger -t "【连接 AP】" "脚本完成"

荒野无灯Padavan固件修改LED颜色脚本

#!/bin/sh
        echo --- WatchDog ---
        mtk_gpio -w 8 0 & mtk_gpio -d 11 0 & mtk_gpio -w 10 1
        ping -c 1 119.29.29.29 >/dev/null
        if [ $? -eq 0 ]
        then
                echo "WAN Online !"
                echo --- Exit ---
                mtk_gpio -w 8 0 & mtk_gpio -d 11 0 & mtk_gpio -w 10 0
        else
                echo "WAN Offline !"
                mtk_gpio -w 8 1 & mtk_gpio -d 11 1 & mtk_gpio -w 10 1
        fi

将以上代码保存为led.sh后缀的文件,然后放在/etc/storage/中并设置文件权限755,之后在Crontab中添加一条

*/1 * * * * /etc/storage/led.sh

即可。联网蓝灯,断网红黄同亮。

官方QQ群号码:922069959

您可能感兴趣的文章