接続しているSSIDでIPアドレスを変更したい(wlan0.sh編)
ホスト名でアクセスできないことが分かったので色々考えてみた。
で、
piCorePlayerの設定をDHCPからStatic IPに変更して、
接続しているSSIDを識別してIPアドレスを設定すれば良いじゃん。
と思いついた!
早速、手元にある予備のRPiを使用して試してみる。
1.Static IPに変更
DHCPで振られたIPアドレス:192.168.3.188でpiCorePlayerにアクセスして、
Main Page>Beta tab>Static IPでDHCPからStatic IPに変更する。
192.168.3.97を指定してリブート
バッチリ変更したStatic IPに変更された。
192.168.3.97になった
piCorePlayerのシステム上のどこが変更になったのか?
2.設定状況の確認
piCorePlayerを初期設定するスクリプトは/optに置かれている。(ここ参照)
tc@pCP:~$
tc@pCP:~$ cd /opt
tc@pCP:/opt$ ls -a
./ .filetool.lst bootlocal.sh shutdown.sh wlan0.sh
../ .xfiletool.lst bootsync.sh tcemirror
ブラウズしてみるとwlan0.shと分かる。
中身を確認してみる。
tc@pCP:/opt$ cat wlan0.sh
#!/bin/sh
# Maintained by piCorePlayer
echo "[ INFO ] Running $0..."
NWOK=1
until [ -d /sys/class/net/wlan0 ]
do
if [ $((CNT++)) -gt 50 ]; then
echo -n "${RED}No Ethernet Adapter [wlan0] Found!${NORMAL}"
NWOK=0
break
else
echo -n "."
sleep 0.5
fi
done
if [ $NWOK -eq 1 ]; then
ifconfig wlan0 192.168.3.97 netmask 255.255.255.0 broadcast 192.168.3.255 up
route add default gw 192.168.3.1
sudo echo nameserver 192.168.3.1 > /etc/resolv.conf
/etc/init.d/settime.sh &
fi
設定したIPアドレスがありました。
このスクリプトを変更すれば良さそうです。
3.接続しているSSIDを取得する
WiFiの設定をするコマンドはiwconfigのようだ。
試してみる。
tc@pCP:~$ iwconfig
lo no wireless extensions.
wlan0 IEEE 802.11 ESSID:"TP-Link_BC32"
Mode:Managed Frequency:2.452 GHz Access Point: 40:xx:xx:xx:xx:32
Bit Rate=39 Mb/s Tx-Power=20 dBm
Retry short long limit:2 RTS thr:off Fragment thr:off
Power Management:off
Link Quality=57/70 Signal level=-53 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:7 Invalid misc:9 Missed beacon:0
という具合にSSIDを含んだ表示がされる。
wlan0に絞るには
tc@pCP:~$ iwconfig wlan0
とすれば良い。
4.SSIDを評価する
iwconfigの結果に"TP-Link"が含まれているかを調べる。
tc@pCP:~$ iwconfig wlan0 | grep TP-Link ; echo $?
wlan0 IEEE 802.11 ESSID:"TP-Link_BC32"
0
tc@pCP:~$ iwconfig wlan0 | grep TPLink ; echo $?
1
という具合に評価できる。
5.評価結果を使用して接続するIPアドレスを変更する
Static IPの評価に加えてSSIDの評価を追加してみた。
grepが無言で動くように-qオプションを付けるよ。
tc@pCP:/opt$ sudo vi wlan0.sh
tc@pCP:/opt$ cat wlan0.sh
#!/bin/sh
# Maintained by piCorePlayer
echo "[ INFO ] Running $0..."
NWOK=1
until [ -d /sys/class/net/wlan0 ]
do
if [ $((CNT++)) -gt 50 ]; then
echo -n "${RED}No Ethernet Adapter [wlan0] Found!${NORMAL}"
NWOK=0
break
else
echo -n "."
sleep 0.5
fi
done
if [ $NWOK -eq 1 ] && iwconfig wlan0 | grep -q TP-Link ; then
ifconfig wlan0 192.168.3.96 netmask 255.255.255.0 broadcast 192.168.3.255 up
route add default gw 192.168.3.1
sudo echo nameserver 192.168.3.1 > /etc/resolv.conf
/etc/init.d/settime.sh &
else
ifconfig wlan0 192.168.132.231 netmask 255.255.255.0 broadcast 192.168.132.20
route add default gw 192.168.132.148
sudo echo nameserver 192.168.132.148 > /etc/resolv.conf
/etc/init.d/settime.sh &
fi
設定を保存するための呪文
tc@pCP:/opt$ sudo filetool.sh -b
0 件のコメント:
コメントを投稿