|
|
|
리눅스팁 Go Unix Power Tools Online Book
Go Bash Guide
|
|
Read No. 138 article |
2002-04-24 20:20:00 |
|
|
|
|
NickName |
풀비누 |
Subject |
webalizer 호스팅용 가상호스팅 분석 등록 스크립트 |
|
|
버젼 : 0.2
사용하실때 /etc/webalizer/
아래에 sed 용 디폴트 파일이 존재해야 합니다. 아래 스크립
확인하시면 만드실 수 있을 겁니다 ^^;
#!/bin/bash
# webalizer log add script
# date: 2002.4.22
# editor: son hee tae
# 1. 계정내에 public_html/logs 폴더 생성
# 2. /etc/webalizer -> /etc/webalizer/domain.com.conf
# 3. /etc/cron.daily/webalizer add
echo
echo
echo
######################
### 분석 시작 함수 ###
######################
execalizer() {
echo -n "분석을 테스트겸 시도 해 보시겠습니까? [N/y] (default N) "
read execok
if [ "$execok" == "y" ] || [ "$execok" == "Y" ];then
/usr/bin/webalizer -c /etc/webalizer/$servername.conf
echo
echo "분석결과는 http://$servername/logs 에서 확인하실 수 있습니다"
fi
}
#####################
### cron add 함수 ###
#####################
cronadd(){
### 이미 등록되어 있는지 확인
if (( $(cat /etc/cron.daily/webalizer|grep -c $servername) > 0 )); then
echo "/etc/cron.daily/webalizer 파일에 이미 등록이 되어 있습니다"
else
### cron 에 등록
echo "### 계정명: $account 도메인명: $servername 스크립추가일: $(date +%
Y%m%d) " >> /etc/cron.daily/webalizer
echo "/usr/bin/webalizer -c /etc/webalizer/$servername.conf"
>> /etc/cron.daily/webalizer
echo "/etc/cron.daily/webalizer 에 정상적으로 추가 되었습니다"
echo "============================================================="yy
tail /etc/cron.daily/webalizer
echo "============================================================="yy
fi
}
##########################
### log file find 함수 ###
##########################
logfilefind() {
### 도메인 네임 변수 확인
if [ ! $servername ]; then
echo "도메인 네임이 지정되지 않안습니다 "
exit
fi
logfilename=$(cat /etc/httpd/conf/httpd.conf|egrep -A7 $account|grep -
A7 "public_html$"|grep "access"|awk '{print $2}'|sed s/"logs\/"//g)
echo
cat /etc/httpd/conf/httpd.conf|grep -A7 $account|grep -A7 "public_html$"
echo
echo -n "### 로그파일이 $logfilename 이 맞습니까? [Y/n] (default y) "
read logfileok
if [ "$logfileok" == "n" ] || [ "$logfileok" == "N" ]; then
echo -n "### 로그 파일 이름을 적어주세요 : "
read logfilename
fi
}
####################################
### webalizer configuration 함수 ###
####################################
addweblog() {
### logfinename 변수가 빈경우
if [ ! $logfilename ]; then
echo "logfilename 이 없습니다 스크립을 종료합니다"
exit
fi
### 도메인 네임 변수 확인
if [ ! $servername ]; then
echo "도메인 네임이 지정되지 않안습니다 "
exit
fi
### sed 생성
echo "s|###logfileinput|LogFile /var/log/httpd/$logfilename|g"
> /tmp/change.temp
echo "s|###outputdirinput|OutputDir $which/public_html/logs/|g"
>> /tmp/change.temp
echo "s|###hostnameinput|HostName $servername|g"
>> /tmp/change.temp
echo "sed 정보 생성 /tmp/change.temp "
cat /tmp/change.temp
### sed 정보 확인
echo
echo -n "### sed 정보가 정확합니까? [Y/n] (default Y) "
read sedok
if [ "$edok" == "n" ] || [ "$sedok" == "N" ]; then
echo "다시 시작하시기 바랍니다"
exit
fi
### webalizer.conf 파일 생성
if [ -f /tmp/change.temp ] ; then
sed -f /tmp/change.temp /etc/webalizer/autowebalizer.conf
> /etc/webalizer/$servername.conf
echo
echo "/etc/webalizer/$servername.conf 파일이 생성되었습니다"
else
echo "/tmp/change.temp sed 파일이 없습니다"
exit
fi
### conf 파일이 있는 경우
}
#############################
### 도메인 정보 습득 함수 ###
#############################
whatdomain() {
servercount=$(cat /etc/httpd/conf/httpd.conf|egrep "$account"|grep -
c "ServerName")
### 겅색이 하나만 딱 걸린경우 ^^
if (( $servercount == 1 )); then
servername=$(cat /etc/httpd/conf/httpd.conf|egrep "$account"|grep "Server
Name"|awk '{print $2}')
echo
echo -n "### 도메인 네임이 $servername 이 맞습니까? [Y/n] (default Y) : "
read okdomain
else
servername=$(cat /etc/httpd/conf/httpd.conf|egrep -C $account|egrep -
A1 "public_html$"|grep "ServerName"|awk '{print $2}')
cat httpd.conf |grep -C $account|egrep -A1 "public_html"
echo
echo "도메인 네임이 여러개 등록되어 있습니다"
echo -n "### 도메인 네임이 $servername 이 맞습니다? [Y/n] (default Y) : "
read okdomain
fi
if [ "$okdomain" == "n" ] || [ "$okdomain" == "N" ]; then
putdomain
fi
}
########################
### 도메인 등록 함수 ###
########################
putdomain() {
echo
echo -n "### 도메인 네임을 적으세요 (ex:domain.com) : "
read servername
}
#####################
### main 스크립트 ###
#####################
### 등록 계정 입력
echo
echo "### Webalizer logs auto add script ###"
echo
echo -n "### 추가시킬 계정 명을 적으세요: "
read account
### 계정 위치 찾기
which=$(find /home*/ -maxdepth 1 -name "$account")
### 계정이 없는 경우 (오타)
if [ ! $which ] ;then
echo "그런 계정은 존재하지 않습니다"
exit
fi
### public_html 갯수 조회
echo "계정 위치 : $which"
homecount=$(ls -l $which|grep -c "public_html" )
### public_html 폴더가 없는 경우
if (( $homecount == 0 )) ; then
echo "public_html 폴더가 존재하지 않습니다"
exit
fi
### public_html 폴더가 하나 존재하는 경우
if (( $homecount == 1 )) ; then
echo "public_html 폴더가 하나 존재합니다"
### logs 폴더가 빈폴더 인지 확인
if (( $(ls $which/public_html/logs/|grep -c "*.*") == 0 )) ;then
if [ ! -d $which/public_html/logs ];then
mkdir $which/public_html/logs
echo ">>> logs 디렉을 생성하였습니다"
fi
whatdomain
logfilefind
addweblog
cronadd
execalizer
exit
fi
fi
### public_html 폴더가 하나 이상 존재하는 경우
if (( $homecount > 1 )) ; then
echo "public_html 폴더가 하나이상 존재합니다"
echo "기본 폴더인 public_html 에 설치 진행됩니다"
if (( $(ls $which/public_html/logs/|grep -c "*.*") == 0 )) ;then
if [ ! -d $which/public_html/logs ];then
mkdir $which/public_html/logs
echo ">>> logs 디렉을 생성하였습니다"
fi
whatdomain
logfilefind
addweblog
cronadd
execalizer
exit
fi
fi
|
|
Page Loading [ 0.03 Sec ]
SQL Time [ 0 Sec ]
|
|
|