Zaurus用Airkeeperモドキ改良版 ― 2009年11月04日 00時00分00秒
今日はザウルスネタ。ザウルスにPHS通信カードを挿して使っている人は今でも多いと思う。それでそのPHSデータ通信なのだが、データが流れていないとデータカード内部でスリープ状態にされてその復帰・再接続に時間がかかり速度が出ないらしい(表面的にはずっと接続を続けているようにみえる)。それで、何秒かに1回Pingを打ってスリープさせないフリーソフトがある。AirKeeperモドキである。
たしかにこのAirkeeperモドキをインストールすると、ブラウザでアクセスする際のタイムラグのようなものがなくなり、キビキビとアクセスするようになる。リンクをクリックしてから接続しに行く時間が短くなるし、同じページの中に違うサーバーから読み込んでいるような場合、次々と接続していくようになる。画像の転送速度だけを測るような回線速度測定サイトでは数値は変わらないが、通常の使い方でクリックしてからページ全体が表示されるまでの速さが短くなる。ブラウザだけでなくほかの通信するソフトでも速い。
しかし、一つ気になる点があった。ダイヤルアップでPPP接続するとAirkeeperモドキが自動的に起動するのはいいのだが、切断してもAirkeeperモドキがずっとプロセスに残っているのである。これが気になるのでずっとAirkeeperモドキは使ってなかった。切断、接続を繰り返してもAirkeeperモドキが二重三重に起動するわけではないので気にしなければよいのだが…。
検索すると、同じようなひとがおられるようで、NetHelperAppletでAirkeeperモドキを起動・停止すればいいという情報があった。
http://wiki.livedoor.jp/kirifue/d/NetHelperApplet
しかし、この設定では接続時にAirkeeperモドキが2個起動して、切断時にはそのうちの1つが停止するだけであった。Airkeeperモドキインストール時に起動するようにどこかで呼び出されている方のプロセスがそのままのようで、これだと意味がない(AirkeeperモドキをインストールしてもPPP接続時にAirkeeperが自動で起動しない人はNetHelperAppletで制御するのがいい)。少し調べたが、Airkeeperモドキがどこで呼び出されているのか私には分からなかった。
さらに検索すると、やはり同じような人がおられるようで、
http://www.geocities.co.jp/SiliconValley-Bay/1180/part114.htmlのレス番号429で改良が提案されていた。レス番号504と509で改良版が完成していた。このレスはAirkeeperモドキのリリースよりも前のようなのだが、Airkeeperモドキにはこの改良は反映されていないようだった。
429 :いつでもどこでも名無しさん :03/01/24 23:02 ID:??? AirKeeperモドキ改良希望です。 PPP切断するなどでネットワークがunreachableになったときに 無限ループから抜けたいのですが、どうしたらいいでしょう。 pingがエラーを出してくるのでうざいです。 ■airkeeper.sh #!/bin/sh while true do ping -q -c 1 192.168.0.1 >/dev/null sleep 1s done exit 0504 :いつでもどこでも名無しさん :03/01/25 16:57 ID:??? >>429 pingの戻り値を判定するようにしてみました ------------------------------------------------- #!/bin/sh host=192.168.0.1 end(){ echo "AirKeeper terminated" exit 0 } trap end 1 2 3 15 while : do ping -c 1 $host >/dev/null 2>&1 rc=$? if [ $rc -ne 0 ]; then echo "AirKeepr abnormal end (rc=$rc)" exit &rc fi sleep 1 done -------------------------------------------------505 :429 :03/01/25 17:25 ID:??? >>504 試してみました。完璧です。PPP落とした瞬間に動作止まります。 厨房スクリプトを改造してくれてありがとう。506 :429 :03/01/25 17:49 ID:??? >>504 イイと思ったのですが、この判定方法だと、ちょっと電波状態が 悪いだけでTerminateしてしまいます。 PPPを切断した状態だと、pingからは、以下のようなエラーが返 ってきます。 > Network is unreachable これを判定してループから抜けるようにできないでしょうか。509 :いつでもどこでも名無しさん :03/01/25 19:55 ID:??? >>506 すみません,考えが甘かったですね. ------------------------------------------------- #!/bin/sh host=192.168.0.1 errmes="Network is unreachable\nHost name lookup failure" end(){ exit 0 } trap end 1 2 3 15 while : do ping -c 1 $host 2>&1 | grep -F "$(echo -e $errmes)" >/dev/null if [ $? -eq 0 ]; then exit 1 fi sleep 1 done -------------------------------------------------
それでこのレス番号509の内容を戴くことにした。ただ、この509の内容は接続先とPingの間隔を外部で指定していないので、その部分はAirkeeperモドキの方が~/Settings/airkeeper.conf の設定ファイルで設定するようになっていていい。両方のいいとこどりすることにした。
#!/bin/sh # Airkeeper modoki 改良版 # Thanks to:【VGA】Linuxザウルス SL-C700 スレッド part 14 # 509 03/01/25 # http://haniwa.asablo.jp/blog/ # http://haniwa.asablo.jp/blog/2009/11/04/4675366 setting=/home/root/Settings/airkeeper.conf host=`grep ^Host $setting | sed 's/ //g' | sed 's/Host=//'` wait=`grep ^Wait $setting | sed 's/ //g' | sed 's/Wait=//'` errmes="Network is unreachable\nHost name lookup failure" end(){ exit 0 } trap end 1 2 3 15 while : do ping -c 1 $host 2>&1 | grep -F "$(echo -e $errmes)" >/dev/null if [ $? -eq 0 ]; then exit 1 fi sleep $wait done
使い方は、まずは、通常のAirkeeperモドキをダウンロードしてインストールする。
TreeExplorer QTなどで、/home/QtPalmtop/binのairkeeperをAirkeeperoldなどにリネーム(名前を変更)する。
次に、ZEditorなどのテキストエディタで上記の「Airkeeper modoki 改良版」の内容をコピーして、/home/QtPalmtop/binにairkeeperと名前を付けて作成する。
TreeExplorerQTなどで、今新規に作成した/home/QtPalmtop/bin/airkeeperの実行属性をつける。TreeExplorer QTのファイル→プロパティで「権限」の「実行」以下の所有者・所有グループ・その他にチェックを入れる。
設定ファイルは、home/zaurus/Settings/airkeeper.conf だ。デフォルトでは、
Host = www.willcom-inc.com Wait = 10
になっているが、私はKWINSなので、Host = kwins01.kwins.gnet.ne.jpにしている。Ping間隔は10のままでいいと思う。これもZEditorなどのテキストエディタで編集して保存する。
これでPPP接続するとAirkeeperが起動して、スリープや切断時にはAirkeeperが停止する。WhatsUpOnZなどで起動・停止を確認して欲しい。
「Airkeeperモドキ改良版」は無保証です。自己責任でお願いします。SL-C3200、スペシャルカーネルv18jでしか確認していません。
最後になりましたが、「【VGA】Linuxザウルス SL-C700 スレッド part 12」スレの方、A Way Out様、「【VGA】Linuxザウルス SL-C700 スレッド part 14」スレの方に感謝します。
最近のコメント