2011年3月29日火曜日

Debian シェルスクリプトによるシステムアップグレードの自動化

  • このエントリーをはてなブックマークに追加


Debianシステムアップグレードを自動化するために、シェルスクリプトを作成してみました。

#!/bin/sh
#This script is for upgrading automatically

JOBLOG=/var/log/auto-upgrade.log
#the max size of JOBLOG
MAX_SIZE=300000
SIZE=`wc -c $JOBLOG | awk '{print $1}'`

#ログファイルのサイズをチェック
if [ $SIZE -gt $MAX_SIZE ]
then
echo > $JOBLOG
fi

echo "`date "+%Y/%m/%d %T"` ****** $0: Job start at `/bin/hostname` ******" >> $JOBLOG 2>&1
#echo -n "*** $0: Job start at `/bin/hostname` on " >> $JOBLOG 2>&1
#date "+%Y/%m/%d %T" >> $JOBLOG 2>&1

#Debian stable/testing
echo "`date "+%Y/%m/%d %T"` Command:"apt-get update" is running ......" >> $JOBLOG 2>&1
apt-get update >> $JOBLOG 2>&1
echo "`date "+%Y/%m/%d %T"` Command:"apt-get update" is finished ......" >> $JOBLOG 2>&1

echo "`date "+%Y/%m/%d %T"` Command:"apt-get upgrade" is running ......" >> $JOBLOG 2>&1
apt-get -y upgrade >> $JOBLOG 2>&1
echo "`date "+%Y/%m/%d %T"` Command:"apt-get upgrade" is finished ......" >> $JOBLOG 2>&1

echo "`date "+%Y/%m/%d %T"` Command:"apt-get autoclean" is running ......" >> $JOBLOG 2>&1
apt-get autoclean >> $JOBLOG 2>&1
echo "`date "+%Y/%m/%d %T"` Command:"apt-get autoclean" is finished ......" >> $JOBLOG 2>&1

#apt-get update >> $JOBLOG 2>&1 && apt-get upgrade >> $JOBLOG 2>&1 && apt-get autoclean >> $JOBLOG 2>&1

echo "`date "+%Y/%m/%d %T"` ****** $0: Job ended at `/bin/hostname` ******" >> $JOBLOG 2>&1
echo >> $JOBLOG 2>&1

#ログファイルの内容をadministratorにメールツールする
ADMIN_MAIL=administrator@debian.test.local
case "$ADMIN_MAIL" in
*@*)
cat $JOBLOG | mail -s "[cron-log][`/bin/hostname`] APT Upgrade Log" $ADMIN_MAIL
;;
esac
exit 0

スクリプトファイルを実行可能にする。

毎週一回実行したいので、cronに登録する。
方法一:直接/etc/cron.weeklyにコピーする。
方法二:/etc/crontabファイルを編集する
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#毎週の日曜日の朝2時、スクリプトを実行する
0 2 * * 7 root /usr/local/scripts/autoupgrade



この記事がお役にたちましたらシェアをお願いします:)

  • このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿