NetWalkerでDUNをボタンひとつで接続/切断
11月2日のblogで試していたNotify-OSDを有効活用できるようにしまひた。
DUN成功したとき。
DUN失敗したとき。
DUN切断したとき。
こんなかんじでポップアップしてくれまふ。zenity でも良いのだけど、notifyのほうがかわいらしいのでふ。
ポイントは、ponするときにユーザがdipにいないといけないようでふので
subaru@subaru:~$ sudo adduser subaru dip ユーザ `subaru' をグループ `dip' に追加しています... ユーザ subaru をグループ dip に追加 終了。 subaru@subaru:~$
を、先にしてあげておきまひょう。あとはgawkがデフォルトで入ってないので入れる。んで、以下のよーなすくりぷとを作っておいて、クイックスタートボタンのどれかに指定しておくと、ボタンひとつでDUNのON/OFFができるようになりまひた。
ほんとうはクイックスタートボタンではなくて、Fn + 2 に割り当てたいのだけど、Fnのキーマップがどうやってとっていいのかわからず、あきらめちう。もうちょっとWEBさーひんして調べよう・・・。Fn + 2に割り当てれればもっと操作性があがるんだけどなぁ。くいっくすたーとぼたんは押しにくい。押してないね。さわってるだけだね。
あとはー、hciconfig hci0 up/down するときにroot権限が必要なんだけど、回避する方法がわからなくって、expectで逃げようと思ったのだけど、sudo の問いかけをひっかけられなくて、断念。しかたがないのでgksudoにしまひた。
まぁ、以下のスクリプトで動いているのでいーんでふ。すばはぷろぐらまーじゃないので、エクセルしか使えないSEなので、もっときれいに書き直したら教えてくださひ。
#!/bin/sh #---------------------------------------- LANG=C MYPPP=ppp0 MYDEV=★★★★★★★★★★★★ MYHCIDEV=hci0 MYPROV=em TIMER=20 IMGOK=/home/subaru/myconf/OK.jpg IMGNG=/home/subaru/myconf/NG.jpg #---------------------------------------- #---------------------------------------- sub_notify() { echo "TRACE notifyよびだし" notify-send -u critical -i $1 $2 $3 } sub_myip() { echo "TRACE IPチェック" MYIP=`/sbin/ifconfig $MYPPP 2>/dev/null | grep 'inet addr' | gawk '{print $2;}' | gawk -F : '{print $2;}'` echo "TRACE IP -> $MYIP" } #---------------------------------------- #DUN中は切断 sub_myip if [ $MYIP ];then echo "TRACE IPがある。poff実行。" poff sub_myip if [ $MYIP ];then echo "TRACE IPがある。poff失敗。" sub_notify $IMGNG "失敗" "DUNの切断に失敗したじぇ。。。" exit else echo "TRACE IPがない。poff成功。" gksudo /usr/sbin/hciconfig $MYHCIDEV down sub_notify $IMGOK "成功" "DUNを切断したじぇ!" exit fi else echo "TRACE IPがない" fi #---------------------------------------- #Deviceのチェック devstatus=`hcitool dev | grep $MYHCIDEV | gawk '{print $2;}' | sed -e 's/\://g'` echo "TRACE DeviceID -> $devstatus" if [ "$MYDEV" != "$devstatus" ]; then #hcitool devでドングルが認識されていない時 echo "TRACE ドングルがオフライン。UP実施。" #ドングルの起動を実施 gksudo /usr/sbin/hciconfig $MYHCIDEV up if [ $? -ne 0 ]; then #UPできない時はあきらめるしかない echo "TRACE ドングルがささってないか認識されてない" sub_notify $IMGNG "えらー" "ドングルがささってないか認識されてないじぇ。再起動しかないじぇ。。。" exit else echo "TRACE ドングルのオンライン化に成功。" fi else echo "TRACE ドングルはオンライン" fi #---------------------------------------- #pon実行 pon $MYPROV while [ $TIMER -gt 0 ];do sleep 1 sub_myip if [ $MYIP ];then echo "TRACE IPがある。" sub_notify $IMGOK "成功" "DUNしたじぇ!現在のIPは$MYIPだじぇ!" exit else echo "TRACE IPがない。" fi echo "TRACE 残り待ち時間 $TIMER 秒。" TIMER=`expr $TIMER - 1` done sub_notify $IMGNG "失敗" "DUN失敗だじぇ。。。" exit