===== ログを別サーバへローテートのシェル =====
※expect のインストール要
# yum -y install expect
#!/bin/sh
# パラメータ
APACHE_DIR="/var/log/httpd/"
ACCESSLOG="access_log"
ERRORLOG="error_log"
DIST=`hostname`
#HOST="192.168.80.222"
HOST="ManageServer"
USER="user"
PASS="password"
TARGET_DIR="/var/log_backup"
yes="yes"
###############################################################################
# アクセスログ、エラーログを圧縮
# apache の再起動は安全の為に graceful で行いたいが、
# cronですると再起動に失敗する
#
# バックアップ日付(現在時刻)の取得
BKDATE=`date +%Y%m%d_%H%M%S`
# 各ログファイルを日付つきにリネーム
mv $APACHE_DIR$ACCESSLOG $APACHE_DIR$DIST.$ACCESSLOG.$BKDATE
mv $APACHE_DIR$ERRORLOG $APACHE_DIR$DIST.$ERRORLOG.$BKDATE
# apacheを再起動
#apachectl -k graceful
/etc/rc.d/init.d/httpd restart
# 日付つきログファイルを圧縮
gzip $APACHE_DIR$DIST.$ACCESSLOG.$BKDATE
gzip $APACHE_DIR$DIST.$ERRORLOG.$BKDATE
###############################################################################
# 管理サーバへSCPでバックアップ
# except+SCPでシェルスクリプト内にパスワードを持たせるのは
# bad know-howとの指摘も。。。
#
# access_log
expect -c "
sleep 1
set timeout 60
spawn scp $APACHE_DIR$DIST.$ACCESSLOG.$BKDATE.gz $USER@$HOST:$TARGET_DIR
expect {
\"Are you sure you want to continue connecting (yes/no)?\" {
send \"$yes\n\"
expect \"password:\"
send \"$PASS\n\"
} \"password:\" {
send \"$PASS\n\"
}
}
expect {
\"100%\" {
sleep 1
# error_log
spawn scp $APACHE_DIR$DIST.$ERRORLOG.$BKDATE.gz $USER@$HOST:$TARGET_DIR
expect {
\"password:\" {
send \"$PASS\n\"
}
}
expect {
\"100%\" {
exit 1
}
}
}
}
"