B / Y / U / S
HOME 웹 호스팅 도메인 매뉴얼 고객지원 설정정보 계정신청 2025-04-29 Tuesday 
웹 호스팅
# 공지 사항
# 자주 묻는 질문
# 질문과 답변
# 가입 문의
커뮤니티
# 자유게시판
# 리눅스팁
# 아이큐 테스트
# 내홈 소개
# 겔러리
# 자료실

  리눅스팁  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
Regist Addr [ 192.168.0.2 ] 목록보기 윗글 아랫글
정규표현식 [ 상세 검색 ]
Page Loading [ 0.03 Sec ] SQL Time [ 0 Sec ]

Copyleft 1999-2025 by JSBoard Open Project
Theme Designed by IDOO And follow GPL2

개인정보 취급방침 이용 약관 사이트 맵 어드민 관리