#!/usr/bin/php4
<?php
/*************************************************************************************************
    Name    : auto_reconnect_ppp.php
    Acthion : PPP接続を監視。落ちてたら再接続。
    Spec.   : ppp0がniftyの固定IPじゃなかったら、
          ppp0,ppp1をifdownしてifupする。
          ppp0はniftyやけど、ppp1がinterlinkじゃなかったら、
          ppp1だけをifdownしてifupする。

                                2009.05.17 Ver.0.01  Genki wrote

    仕様
    Ver.0.01    とりあえず。これだけでいけるかな?5分ループ。rc.localで起動。

***************************************************************************************************/
$if0 "ppp0";                        //監視するインタフェイス(nifty)
$static_addr0 "58.1.245.163";                //本来あるべきIPアドレス(nifty)

$if1 "ppp1";                        //監視するインタフェイス(interlink)
$static_addr1 "61.206.119.6";                //本来あるべきIPアドレス(interlink)

while(true){                        //無限ループ
    
exec("ifconfig {$if0}",$ipaddr0);        //$if0 の ifconfig
    
list(,$ipaddr0,) = explode(":",$ipaddr0[1]);    //inetアドレス:58.1.245.163 P-t-P:・・・
    
list($ipaddr0,) = explode(" ",$ipaddr0);    //↑コロンで分けてスペースで分けてipaddr残る

    
exec("ifconfig {$if1}",$ipaddr1);        //$if1 の ifconfig
    
list(,$ipaddr1,) = explode(":",$ipaddr1[1]);    //inetアドレス:61.206.119.6 P-t-P:・・・
    
list($ipaddr1,) = explode(" ",$ipaddr1);    //↑コロンで分けてスペースで分けてipaddr残る
    
    
if($ipaddr0 != $static_addr0){            //一致しなけりゃifdown ifup実行
        
exec("ifdown {$if0}");
        
exec("ifdown {$if1}");
        
exec("ifup {$if0}");
        
exec("ifup {$if1}");
        continue;                
//再接続試みた場合は5分待たずに再チェック
    
}elseif($ipaddr1 != $static_addr1){
        
exec("ifdown {$if1}");
        
exec("ifup {$if1}");
        continue;                
//再接続試みた場合は5分待たずに再チェック
    
}
    
sleep(300);                    //5分で無限ループ
}

?>