戻る

apt 更新通知

[更新履歴]

03/06/08 … 動作確認しました(^-^;
Debian には、apt っつーお手軽簡単(以下略)。セキュリティアップデートもコマンド一発なんで、cron にでも突っ込んでおけばいいけど、セッション確立中のサーバデーモンとかの更新だと困るかなぁ、、とか勝手に思って、更新があれば、その内容だけを通知するよーなシェルを作成。

なんか、apt-watch や cron-apt などの同じことができそうなパッケージがあるみたいだけど、試してないのでわかりません…(^-^;;;

概要

apt-get -u upgrade を実行するとリストが表示され、[Y/n] で入力待ちになるので、echo n をパイプで突っ込んどいて、Abort させる。すると、exit 1 がかえってくるんで、if でひっかけて mail する。
更新がなければ exit 0 なので、何もしない。
あとは、cron ででも動かしておけばいい。

スクリプト

めずらしくシェルで作成。説明するまでもないっすね…。
#!/bin/sh

/usr/bin/apt-get update > /dev/null 2>&1
echo n | /usr/bin/apt-get -u upgrade > /tmp/apt-cron_$$ 2>&1

if [ $? -eq 1 ]; then
  /usr/bin/mail -s apt-cron root < /tmp/apt-cron_$$
fi

/bin/rm /tmp/apt-cron_$$
ちなみに、
$$ … シェル自身のPID
$? … 最後に実行したコマンドの exit 値

ほかによく使うのは、
$n (n:0〜9) … 引数(0 はコマンド自身)

他は使ったことすらねぇ。つーか知らない。

mailコマンドは、
-s … Subject
-c … Cc
-b … Bcc
mail -s 件名 宛先 < 本文
書くまでもねぇな

つーか、これ実装した後にアップデートしたパッケージがないから、ちゃんと動くかどーかわからん。
06/07 に gzip のアップデートで動作確認しました。
でも、正直データ量が多いので(ケータイに飛ばしてる)、mailコマンドを実行する前に、以下のようにガリガリやってる。
(実際は一行)
/bin/grep -v ^Reading /tmp/apt-cron_$$ | /bin/grep -v ^Building |
/bin/grep -v ^Need | /bin/grep -v "^Do you" | /usr/bin/mail -s apt-cron root
ちなみに、飛んでくるメールはこんな感じ。
The following packages will be upgraded
  gzip
1 packages upgraded, 0 newly installed, 0 to remove and 0  not upgraded.
便利です。