hakeの日記

Windows環境でプログラミングの勉強をしています。

ネット接続失敗時の自動リトライその2

昨日のrubyのソースで使用した、ネット接続中を確認するonline?メソッドの機能が気に入ったので同様のことを行うシェルスクリプトを書いてみました。
5月9日の日記で書いたスクリプトと置き換えて使用するつもり。変数$ipにゲートウェイのIPが入るのですが、もっと簡単にIPを抜き出す方法ってあるんですかね。


しかし、このスクリプトだと接続失敗の確率が減るのは何故だろう?

……と思ったら、やぱり変わらないっす(^^;

#!/bin/sh

net_online(){
i=`/sbin/route -n | /bin/grep -e "^0\.0\.0\.0"`
if [ "$i" ]; then
   ip=`/bin/echo $i | /bin/sed -e "s/\s+/ /g" | cut -d" " -f 2`
#   echo "ip=$ip"

   k=`/bin/ping -c 1 "$ip" | /bin/grep -e "time"`
   if [ "$k" ]; then
       return 0
   fi
   return 1
else
   return 1
fi
}

#####

while !(net_online)
do
   echo QPE/Network 'connectRequest()' > /var/spool/inputhelper/qcop
   sleep 1
   /home/QtPalmtop/bin/qcop QPE/InputHelper 'key(QString)' "click Escape"
   sleep 25
done