.." />

道具としてのコンピュータ

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
fi

rm $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.06

exec 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
fi

rm $tmp-*
exit 0

cronからの自動実行でも、無事にメールが届きました。

ただ、なぜか、本文が添付ファイルになって届きます。
(手で起動すると、本文は本文として送られてくるのですが、
cronから起動すると添付ファイルになって届くよ!!)

これは、先生方に教えを仰いで対応策を考えようと思います。

とりあえず、簡単WEBアンテナがこうやって完成しました。やった!

普段使っていない頭を使うのに、ホント、プログラミングはよい刺激になりますね~~。

ホント、プログラミングっていいですね~。

では、サヨナラ、サヨナラ~~。

Related Posts