道具としてのコンピュータ
2012年5月7日
さくらのVPSを使ってシェルプログラミングをしてみよう! その3
前回、前々回と、WEBアンテナを作るために、さくらのVPSを設定したり、シェルスクリプトを書いたりしました。
今回は、更新があったHPの社名とURLをメールで自分に送るように、
シェルスクリプトに記述したいと思います。
前回の終わりで、ポートを開くために(?)、
さくらインターネットVPSを正式契約しました。
これでmailコマンドが使えるようになりましたので、以下のURLを参照に、
シェルに記述を追加します。
参照URL
http://blog.dacelo.info/linux/entry-749.html
(ちなみに、私の環境ではnkfは必要ありませんでした)
書いたスクリプト(一部)がこちらです。
#昨日のデータと比較 エラーがあったらメールを送信
if diff $datd/$yday $datd/$today > $tmp-work1 ;
then
echo 変化無しなので何もしない;
else
echo 変化有りだからメール送信;
grep -e ^'<‘ $tmp-work1 |
self 2 3
mail -s MAIL_FROM_WEBANTENNA luye@luyehuizi.com
firm $tmp-*
exit 0
まず、$tmp-work1というファイルから、行頭が「<」ではじまる行をgrepで抜き出します。
その後、selfコマンドで2列目と3列目(会社名とURLが記述されている)だけ抜き出し、
それをmailコマンドに食わせて、指定するメールアドレスにメール送信します。
最後のrm $tmp-*は作業用のファイルを消すための記述です。
実行したところ、きちんと指定したメールアドレスに以下のようなメールが届きました!
C社 http://www.ccc.co.jp/company/news/index.html
あとは、これを1日1回自動的に動かすようにすれば完成です。
自動処理を行うためには、crontabに記述をします。
[luye@www11132ue ANTENNA]$ crontab -e
20 13 * * * /home/luye/ANTENNA/ANTENNA.sh
これで毎日13時20分にメールが届くはず・・・と思ったのですが、
なぜかメールが届かない!
ログを見てみると、cronから起動したのでパスが通っておらず、
独自コマンドが動いていなかったようです。
文頭にexportコマンドでパスを通すための記述をします。
最終的にできあがったスクリプトがこちら。
#!/bin/bash -xv
# ANTENNA.sh
# by Luye Huizi 2012.05.06exec 2>/tmp/log
export PATH=$PATH:/home/TOOL
tmp=/tmp/$$
today=$(date +%Y%m%d)
yday=$(date +%Y%m%d –date ‘1 days ago’)
dir=/home/luye/ANTENNA
listd=$dir/LIST
datd=$dir/MD5#本日分のデータ作成
awk ‘{print $2}’ $listd/URLLIST |
while read line ;
do
w3m -dump $line |
md5sum ;done |
ycat $listd/URLLIST – > $datd/$today#昨日のデータと比較 エラーがあったらメールを送信
if diff $datd/$yday $datd/$today > $tmp-work1 ;
then
echo 変化無しなので何もしない;
else
echo 変化有りだからメール送信;
grep -e ^'<‘ $tmp-work1 |
self 2 3 |
mail -s MAIL_FROM_WEBANTENNA luye@luyehuizi.com
firm $tmp-*
exit 0
cronからの自動実行でも、無事にメールが届きました。
ただ、なぜか、本文が添付ファイルになって届きます。
(手で起動すると、本文は本文として送られてくるのですが、
cronから起動すると添付ファイルになって届くよ!!)
これは、先生方に教えを仰いで対応策を考えようと思います。
とりあえず、簡単WEBアンテナがこうやって完成しました。やった!
普段使っていない頭を使うのに、ホント、プログラミングはよい刺激になりますね~~。
ホント、プログラミングっていいですね~。
では、サヨナラ、サヨナラ~~。
Related Posts