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アドレスが何だったのかを最後に表示するようにしています。
逆に、デジカメの電源がOFFになっているなどLAN接続が確保できなない場合は「FlashAirにアクセスできません」と表示して終了するようにしています。