VPSサーバーでWebサイト公開 備忘録 ~Linux、MySQLからAJAXまで

更新可能なRPMパッケージのリストをメールで送信する

セキュリティ上、常に最新のRPMパッケージに更新する事が推奨されています。事前に確認せずにパッケージを更新するだけならcronにyum updateコマンドを登録する事で実施可能ですが、場合によってはRPMパッケージがアップデートされたことによって問題が発生する事もあります。

そこで、更新可能なパッケージのリストを確認するBashスクリプトを作成してCronに登録し、更新可能なパッケージが発生した場合にメール通知するようにしてみました。
 
これによって更新可能なパッケージが発生するとメールでリストが送信され、特にアップデートしても問題なければ手動で適宜アップデートするという運用が可能となります。
 
※目次をクリックすると目次の下部にコンテンツが表示されます。

更新可能なRPMパッケージのリストを表示する方法
$ yum list updates

Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.tsukuba.wide.ad.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
Updated Packages
audit.x86_64                              2.2-4.el6_5                    updates
audit-libs.x86_64                         2.2-4.el6_5                    updates
更新可能なRPMパッケージのリストを確認しメール送信するBashスクリプト
#! /bin/bash
echo "From: root@mail.server.com" > rpm-msg
echo "To: test@example.com" >> rpm-msg
echo "Subject: rpm updates list" >> rpm-msg
echo "" >> rpm-msg
yum list updates >> rpm-msg
if grep "Updated Packages" rpm-msg
then
  /var/qmail/bin/sendmail -t 

※上記例では、メールとして"qmail"を使用しているため"/var/qmail/bin/sendmail"となっています。
 
"yum list updates"コマンドで、更新可能なパッケージが存在する場合は、"Updated Packages"と表示され、その後にパッケージが表示されるようなので、"yum list updates"のコマンド実行結果に"Updated Packages"の文字列が含まれているか確認し、含まれている場合はメール送信します。

cronに登録
cronの設定についての詳細は以下の記事参照。
VPSサーバーのcron、anacronの設定
 
一般ユーザーで作成したBashスクリプトをcronに登録します。
 
①cronデーモンの確認
 
cronデーモンが稼動しているか確認します。
 
(確認例)
$ ps -ef | grep cron
root      1532     1  0 Sep27 ?        00:00:16 crond

$ chkconfig --list crond
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off

 
②cronの設定
 
一般ユーザーを使ってcronに登録します。
/etc/crontabを使ってcronに登録する場合はユーザー名を記述しますが、今回はユーザー毎のcron設定なので記述しません
 
(設定例)
毎日、3時1分にスクリプトを実行させる例です。
 
$ crontab -e
 
cronの編集モードになるので以下の記述追加
01 3 * * * /home/user/sample.sh
 
③ログ確認
 
実行されたかどうかは/var/log/cronファイルを見て確認します。

モバイルバージョンを終了