2010年9月16日木曜日

[SA-2-2] 対象とするサイトより値を抽出し,DBに格納するShell Scriptの作成

http://mizubousaiyokohama.jp/suii_point.cgi?point_code=546649

1.データ受け入れ先となるテーブルを作成
$ mysql -u [user name] -p[password] [database name]
create table river_water_level (
 id integer NOT NULL AUTO_INCREMENT PRIMARY KEY,
 observation_time char(20),
 river_water_level char(20)
);

2.Shell Scriptの作成
指定した部分を正しく抜き出せるか確認
$ curl --silent --location 'http://mizubousaiyokohama.jp/suii_point.cgi?point_code=546649' | iconv -t UTF-8 -f SHIFT-JIS | grep -A 10 'suii_now_image_1.*.gif' | sed 's/<[^>]*>//g' | sed '1,8d' | cut -d " " -f 2 | sed '2,3d' | sed 's/-$/0/g'

指定した部分を正しく抜き出せたら,Shell Scriptに組み込む
$ vi get_river_water_level.sh
#!/bin/sh
observation_time=`date +%Y%m%d%H%M%S`

#横浜市水防災情報サイトより河川水位情報取得し,該当部分抜き出し
str_river_water_level=`curl --silent --location 'http://mizubousaiyokohama.jp/suii_point.cgi?point_code=546649' | iconv -t UTF-8 -f SHIFT-JIS | grep -A 10 'suii_now_image_1.*.gif' | sed 's/<[^>]*>//g' | sed '1,8d' | cut -d " " -f 2 | sed '2,3d' | sed 's/-$/0/g'`

echo "insert into river_water_level (observation_time,river_water_level) values ("$observation_time","$str_river_water_level");" >> temp_river_level.sql

/usr/bin/mysql -u [user name] -p[password] -s [database name] < temp_river_level.sql
rm temp_river_level.sql
exit 0

3.Shell Scriptへの実行権限付与
$ chmod u+x get_river_water_level.sh

4.Shell Scriptの実行
$ ./get_river_water_level.sh

5.シェルスクリプトを用いてMySQLに値が登録された事の確認
$ mysql -u [user name] -p [database name]
select * from river_water_level;

6.crontabへの登録
$ crontab -e
6,16,26,36,46,56 * * * * /home/[user name]/get_river_water_level.sh &

7.crontabに正しく登録されたか確認
$ crontab -l

0 件のコメント: