FlashAirのIPアドレスがわからなくなった

FlashAirをステーションモードで使用  していたのですが、しばらく出張で無線LANを使用していなかったらIPアドレスが変更されてしまっていました。固定アドレスではなくDHCPを使用しているならば、よくある話だと思います。

pingなどを使用して地道に新アドレスを特定していたのですが、ふと一気にできないものかと調べてみました。以前に作成したシェルスクリプトを流用して、下記のように変更してみました。 

    
#!/bin/bash
MAC="XX:XX:XX:XX:XX:XX"
IP=`sudo arp-scan -I eth0 -l |\
 grep -i ${MAC} |\
 awk '{print $1}'`
if [ -z ${IP} ]
then
 echo "FlashAirにアクセスできません" | colcat
 exit
fi

declare -a jpgfile
jpgfile=( \
`curl "http://"${IP}"/command.cgi?op=100&DIR=/DCIM/101OLYMP" 2>/dev/null |\
 awk -F"," 'NR>1{print $2}'` \
)

for (( i=0; i<${#jpgfile[*]}; i++ ))
do
 echo $i DCIM/101OLYMP/${jpgfile[$i]}
 curl --get "http://"${IP}"/DCIM/101OLYMP/${jpgfile[$i]}" -o ${jpgfile[$i]}
done

echo "FlashAirのIPアドレスは" ${IP} "でした" | colcat

 MACアドレスは秘匿しています。パッケージなどに表示されていますので、正しい値を入れて下さい。

arp-scanコマンドが肝です。admin状態でarp-scanコマンドを使用するとネットワークに接続されている全ての機器のIPアドレスMACアドレスが表示されます。その中から所望のFlashAirのMACアドレスgrepで検索し、awkコマンドでIPアドレスを取り出し、変数${IP}に格納しました。

あとは殆どFlashAirをステーションモードで使用 の通りだと思うのですが、colcatコマンドは colcat - あるStray Engineer の日記  で作成した、標準出力を着色するコマンドです。

正常終了時は、IPアドレスが何だったのかを最後に表示するようにしています。

f:id:S_E_Hyphen:20181007101639p:plain

逆に、デジカメの電源がOFFになっているなどLAN接続が確保できなない場合は「FlashAirにアクセスできません」と表示して終了するようにしています。