===== ログを別サーバへローテートのシェル ===== ※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 } } } } "