====== WAN 再接続スクリプトを組み込む(必要時) ====== - jffs にディレクトリを作成する。 # mkdir /jffs/scripts # mkdir -p /jffs/var/log - 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 - Web インタフェースの [管理] をクリック、Cron エントリの追加に以下を設定する。 */1 * * * * root /jffs/scripts/pppoe_auto_reconnect.sh