linux:ddwrt:wan_reconnect_script

WAN 再接続スクリプトを組み込む(必要時)

  1. jffs にディレクトリを作成する。
    # mkdir /jffs/scripts
    # mkdir -p /jffs/var/log
  2. PPPOE の再接続スクリプトを作成する。
    pppoe_auto_reconnect.sh
    #!/bin/sh
     
    # ログファイルパス
    LOG_FILE_PATH=/jffs/var/log/pppoe_auto_reconnect.log
    # WAN IP アドレス
    WAN_IP_ADDR=`nvram get wan_ipaddr`
     
    # WAN IP アドレスにpingが通らない場合
    if ! ping -c 1 $WAN_IP_ADDR >/dev/null; then
        echo `date +"%Y/%m/%d %T"`" WANが切断されました.("$WAN_IP_ADDR") 再接続中..." >> $LOG_FILE_PATH
        # 関連するデーモンを終了させる
        killall redial; killall pppd; killall inadyn; sleep 10
        /usr/sbin/pppd file /tmp/ppp/options.pppoe >/dev/null; sleep 25
     
        # WAN IP アドレスを取得
        WAN_IP_ADDR=`nvram get wan_ipaddr`
     
        # 再接続が成功した場合
        if ping -c 1 $WAN_IP_ADDR >/dev/null; then
            echo `date +"%Y/%m/%d %T"`" WAN再接続成功! ("$WAN_IP_ADDR")" >> $LOG_FILE_PATH
     
            # DDNS の IP アドレスを取得(IPが複数行取得される場合は最終行を取得)
            DDNS_IP_ADDR=`grep -o -e "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" /tmp/ddns/ddns.log | sed -n '$p'`
     
            # DDNS の IP が更新されていない場合
            if [ $DDNS_IP_ADDR != $WAN_IP_ADDR ]; then
                # DDNS デーモンを終了させる
                killall inadyn; sleep 10
     
                # DDNS を更新
                echo `date +"%Y/%m/%d %T"`" DDNS 更新中..."
                /usr/sbin/inadyn --input_file /tmp/ddns/inadyn.conf
                echo `date +"%Y/%m/%d %T"`" DDNS 更新完了!" >> $LOG_FILE_PATH
            fi
        fi
    fi
  3. Web インタフェースの [管理] をクリック、Cron エントリの追加に以下を設定する。
    */1 * * * * root /jffs/scripts/pppoe_auto_reconnect.sh
  • linux/ddwrt/wan_reconnect_script.txt
  • 最終更新: 2019/05/18 02:23
  • by 非ログインユーザー