シェルスクリプトで目的のデータを自動取得

目的の画像データ取得には、シェルスクリプトを使う。コマンドを手で入力せず、あらかじめ記述したコマンドを自動実行するものだ。標準的な拡張子は「.sh」だが、実行すべきプログラムは1行目で指定する。これがスクリプトの一行目にある「#!/bin/sh」の意味だ。また、行頭に「#」マークがあれば、その行は単なるコメントであることを意味する。

今回は、現在から6分前の画像データ(雨量・雷観測情報)を取得するが、ここで使う「date」コマンドは「`」で囲む。「`」はグレイヴ・アクセントやバッククォートと呼ばれ、Shiftキー+@キーで入力する。

「`」で囲むことによって、文字列がdateコマンドの結果に置き換わる。dateコマンドは、「--date '6 min ago'」で現在時刻の6分前を、「+%d%H%M」で日時分のフォーマットで出力する処理だ。1日のまとめは、毎日00:03に、zipコマンドを実行するようになっている。00:03の時点で6分前(23:57)のデータを取得しているので、1日分の画像データをすべて取得済みだ。

#!/bin/sh
# 東京電力 雨量・雷観測情報の6分前データの取得
# 東京都拡大のデータ(89)を取得し、雨量と雷雲落雷でファイル名を書き換える
# 01:雨量データ
# 04:雷雲+落雷データ
cd /home/thunder
wget -t 3 -T 60 -w 2 -nc "http://thunder.tepco.co.jp/wdata/1/89_`date --date '6 min ago' +%d%H%M`.gif"
mv "89_`date --date '6 min ago' +%d%H%M`.gif" "01_`date --date '6 min ago' +%d%H%M`.gif"
wget -t 3 -T 60 -w 2 -nc "http://thunder.tepco.co.jp/wdata/4/89_`date --date '6 min ago' +%d%H%M`.gif"
mv "89_`date --date '6 min ago' +%d%H%M`.gif" "04_`date --date '6 min ago' +%d%H%M`.gif"
#
# 日時処理 2357のデータを取得したのちにZIP圧縮し、保存
#
if test "`date --date '3 min ago' +%H%M`" -eq "0000" ; then
zip -9 -m "/home/thunder/`date --date '1 day ago' +%y%m%d`" *.gif
fi

上記のサンプルスクリプトをコピーして、Windows PCのメモ帳にペーストして保存する。ファイル名「Get06Mago.sh」、文字コード「UTF-8」で保存しよう。保存先のフォルダはどこでもよい。

サンプルスクリプトをWindowsのメモ帳で保存

ファイル名は「Get06Mago.sh」、文字コードは「UTF-8」だ

Raspberry Pi側では、Get06Mago.shと取得する画像データは適当なフォルダに格納する。今回は「/home」の下に「thunder」フォルダを作成し、そこにコピーした。/homeの下にディレクトリを作るには管理者権限が必要なので、「sudo mkdir /home/thunder/」を実行する。

Get06Mago.shをRaspberry Piへ転送するには、Windows PCからRaspberry Piへのファイルコピーを使ってみよう。Windows PCのTera TermでRaspberry Piへログインし、Tera Termのメニューバー「ファイル」-「SSH SCP...」をクリックすると、「TTSSH: Secure File Copy」ダイアログが表示される。

このダイアログの「From」にファイル名「Get06Mago.sh」を入力して、右の「Send」ボタンを押すと、Get06Mago.shがRaspberry Piへ転送される。直接「/home/thunder/」へコピーしたいところだが、thunderディレクトリはroot権限で所有されているので、コピーできない。コピー先を指定するのも面倒なので、ひとまず「~/」という標準状態でかまわない。ログインしているユーザー名「pi」のホームディレクトリにコピーされるので、あとから目的のディレクトリへ移動する。

Tera Termのファイルメニューから「SSH SCP...」を選択する

「TTSSH: Secure File Copy」ダイアログが表示される。一番上の「From」に、Windows PCに保存したGet06min.shを指定。コピー先の「To」は、デフォルトの「~/」でかまわない

Get06min.shをコピーしたら、実行可能にするため「chmod 744 Get06min.sh」コマンドで属性を書き換える。続けて「mv Get06min.sh ../thunder/」コマンドで、Get06min.shをthunderディレクトリへ移動しよう。

Get06min.shをコピーしただけではRaspberry Pi側で実行できないので、「chmod 744 Get06Mago.sh」コマンドで実行属性を付ける。SSH接続されている場合、色が違うので属性が分かりやすいだろう。そして「mv Get06min.sh ../thunder/」コマンドを実行し、Get06min.shをthunderディレクトリへ移動する