セキュリティ上、常に最新のRPMパッケージに更新する事が推奨されています。事前に確認せずにパッケージを更新するだけならcronにyum updateコマンドを登録する事で実施可能ですが、場合によってはRPMパッケージがアップデートされたことによって問題が発生する事もあります。
そこで、更新可能なパッケージのリストを確認するBashスクリプトを作成してCronに登録し、更新可能なパッケージが発生した場合にメール通知するようにしてみました。
これによって更新可能なパッケージが発生するとメールでリストが送信され、特にアップデートしても問題なければ手動で適宜アップデートするという運用が可能となります。
※目次をクリックすると目次の下部にコンテンツが表示されます。
$ 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
#! /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"の文字列が含まれているか確認し、含まれている場合はメール送信します。
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ファイルを見て確認します。