2013年10月7日月曜日

Casperjsを使用し為替レートを自動取得2/2

前回の続きです
メールを送信するためにssmtpをインストールします。
yum install ssmtp
sendmailがインストールされていればサービスを止め自動起動しないようにします。
service sendmail stop
chkconfig sendmail off
MTAをssmtpに切り替えます
下の例では2を入力しEnterを押すことでssmtpを利用するようになります。
alternatives --config mta

There are 2 programs which provide 'mta'.

  Selection    Command
-----------------------------------------------
* +1           /usr/sbin/sendmail.sendmail
   2           /usr/sbin/sendmail.ssmtp

Enter to keep the current selection[+], or type selection number: 2
そして、ssmtpの設定を行います。
vim /etc/ssmtp/ssmtp.conf
root=hogehoge@gmail.com
mailhub=smtp.gmail.com:587
AuthUser=hogehoge@gmail.com
AuthPass=gmailのパスワード
UseStarTTLS=YES
下線部を自分のメールアドレスとパスワードに書き換えてください。
root宛にテストメールを送信
mail -v root
Subject: test
test mail
Cc:
Ctrl+dを押下
これでうまく行っていれば先ほど設定したgmail宛に
メールが届きます。

ここまでくればあと一歩
あとは、前回作成した為替レート取得scriptと
合わせるだけです。

以下が私が作成した例です。
vim mailtest.sh
#!/bin/sh
address="hogehoge@gmail.com"
subject=`date +"%Y/%m/%d %p %I:%M:%S"`
body=`casperjs /usr/home/kaz/cron/ex.js`

subject=`echo $subject | nkf -j`

mail -s $subject $address << _EOT_
`echo $body | nkf -j`
_EOT_

exit
2行目のメールアドレスが転送したい宛先です。
3行目の+"%Y/%m/%d %p %I:%M:%S"の部分はメールの件名です
例では現在の"年/月/日 時:分:秒"がメールの件名で届きます。
4行目ではメールの本文を入力しています。
`casperjs /usr/home/kaz/cron/ex.js`というのは
/usr/home/kaz/cronにあるex.jsというファイルをcasperjsで実行するという意味で
「`」で囲むことで実行結果をbody変数へ代入しています。
あとは、8~10行目でメールを送信し完了です。

これでメールで為替レートを取得する仕組みが出来ましたので
これを定期的に実行するだけです。
いろいろなやり方があるようですが
私は以下のやり方で行っています。
vim /etc/crontab
以下を追記
0,10,20,30 * * * * root /usr/home/kaz/cron/exmail.sh
分時
このように指定することで
毎時0、10、20、30分に為替レートがメールで飛んでくるようになります。
上記の例を以下のように書くことで10分おきにメールすることができます。
0,10,20,30,40,50 * * * *

ただし、岡崎市立中央図書館事件のような例もあるので
あまりやり過ぎには気を付けましょう。
最短でも10分とか1時間間隔なら大丈夫だと思いますが
そこは保証できませんのであしからず。
あと、script間違いやここがわからない等ありましたらコメントいただけると嬉しいです。
もっとコードが書けるように日々精進していきます。

0 件のコメント:

コメントを投稿