Linuxルータで常時接続しているのだけど、不意のフリーズとかで無理矢理リセットで再起動したとき、PPP接続が確立しないことがある。
再起動前に切断処理をしてないから、ISPにセッションが残っちゃってつながらないのかな?
まぁ、原因はどうであれ繋がりゃいいので、繋がるまで再接続という強引な手段で解決する。

やりたいことは、
・ifconfigでppp0のIPアドレス確認
・繋がってなかったらifdown ppp0;ifup ppp0してやる。

なわけだけど、うちではnifty(ppp0)とinterlink(ppp1)の2つの固定IPアドレスを使ってて、これがなぜかppp0の接続が無い状態でifup ppp1すると、interlinkがppp0になってしまう。
これもiptableの転送がうまくいかなくなるので、解決せんといかん。
ということで、

・ifconfigでppp0,ppp1のアドレス確認
・ppp0がダメなときは、ppp0,ppp1を両方ifdownしてからifupする
・ppp0はokだがppp1がダメなときは、ppp1だけifdown,ifupする
・処理した後は、すぐにIPアドレスチェックのとこまで戻る
・せっかくなので、無限ループにしといて5分毎ぐらいにチェックし続ける

最後の無限ループの件は、まぁ一番危険なのはオカンが掃除機でCTUの電源を抜いたとか、そーゆーときの対処のため。

実装
auto_reconnect_ppp.php
こんな感じのスクリプトを書いて、

$ sudo vi /etc/rc.local
# ppp自動再接続
cd /home/genkikko/program_files/ ; ./auto_reconnect_ppp.php &
ってしといて、毎度起動後にバックグラウンドで動かしとく。

まだ作っただけで動作確認できてないけど、たぶんいけるでしょ。たぶん。