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

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

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

(1)更新可能な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

 

(2)更新可能な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 < rpm-msg
fi

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

(3)cronに登録


 
一般ユーザーで作成した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
 
01 3 * * * /home/user/sample.sh
 
③ログ確認
 
実行されたかどうかは/var/log/cronファイルを見て確認します。

関連記事の目次
VPSサーバーでスナップショットを取得
~障害に備え、リカバリーポイントを作成。
VPSサーバーにログインして、設定内容を確認
~グローバルIPアドレス確認、SSHキーを作成。
VPSサーバーにSSHでログイン
~Tera Term、SSH、公開鍵認証方式
yumコマンドで最新のパッケージにアップデート
~全パッケージを最新にアップデート
Apacheのインストール
~yumコマンドでApacheインストール、iptablesでファイアウォールの設定
PHPとMySQLをインストール
~yumコマンドでPHP、MySQLインストール
WinSCPを使ってWordPressをアップロード
~WinSCPをクライアントPCにインストール、ファイルアップロード方法
WordPressをインストール
~MySQLでWordPress用データベース作成、wp-config.phpファイルの設定
CentOSのファイアウォール設定
~iptablesを使ってネットワークフィルタリング設定を一から行う
OpenSSHの設定をよりセキュアに
~ログイン制限、ポート変更、認証方式
ApacheでTCPのTraceメソッドを無効にする
~Apacheの設定変更、Telnetで動作確認
ヘッダーにApacheバージョンが表示されないようにする
~Apacheの設定変更、Telnetで動作確認
Apacheでディレクトリ内一覧表示を無効にする
~autoindex_moduleのロードを無効にする
セキュリティを考慮し、MySQLの匿名ユーザーにパスワードを設定、または削除
~MySQLの匿名ユーザーにパスワードを設定、または削除
PHPのバージョンが表示されないようにする
~php.iniの設定変更
WordPressディレクトリのパーミッションをセキュアに
~WordPress用ディレクトリの所有グループ、ユーザー、パーミッション設定
パーマリンク設定時のApache設定
~WordPressパーマリンクの設定、Apache .htaccessの設定
WordPressテーマの選定
~テーマ追加の特徴フィルターの項目、テンプレートキング
WordPressで画像のアップロード、サイズ調整、リンクを設定
~アップロード画像の画像サイズ、サムネイル、画像編集、リンク設定
更新可能なRPMパッケージのリストをメールで送信する
~yumコマンド、Bashスクリプト、Cron
Linuxでディスク使用量が多いディレクトリを調べる方法(1)
~du --max-depth
Linuxでディスク使用量が多いディレクトリを調べる方法(2)
~duコマンド、sortコマンド
WordPressデータベースのバックアップとリストア
~コマンドラインでバックアップ、リストア
WordPressのバージョンアップと旧バージョンへの戻し
~データベースとディレクトリのバックアップ、リストア
BashスクリプトでWordPressデータベースを自動バックアップ
~MySQLデータベースをBash、Cronを使って自動バックアップ、メール通知
BashスクリプトでDos攻撃など大量アクセスのログを検知
~Apacheアクセスログ、Dos、Cron、メール通知
テーマ作成
 
ブートストラップ3を使って自作テーマ作成
~Bootstrap3、自作テーマ作成、TwentyFourteen
Bootstrapのフリーのテーマを使ってデザインを簡単にカスタマイズ
~Bootstrap3のスタイルをカスタマイズ
 
WordPresssショートコード
 
簡単なショートコードを作ってみる
~ショートコードの作り方
ショートコードを使って関連記事のリンクを自動で挿入
~ショートコードの簡単なサンプル
ショートコードを使ってディレクトリ内のファイル名を取得し、投稿内にリンクを挿入
~カスタムフィールド利用、PHPで日本語文字列検索などのコーディング
 
AJAX、AngularJSなどその他応用
 
WordPress投稿内でAngularJSを使用
~AngularJS、Bootstrap、アコーディオン
Bootstrap3で作成したナビゲーションメニューをAngularJSに変更
~AngularJS、Bootstrap、自作テーマheder.php
WordPressでAngularJSを使ったGoogleマップを使えるようにする
~AngularJSを使って投稿内にGoogleマップ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です