DDGR 님의 리플글을 보고... > 그누3 팁자료실

그누3 팁자료실

DDGR 님의 리플글을 보고... 정보

기타 DDGR 님의 리플글을 보고...

첨부파일

gnu.txt (17.3K) 22회 다운로드 2004-07-24 14:30:26

본문

커뮤니티 자유 게시판에 관리자님의 호스팅 업체를 알려달라는 글에 달린 DDGR님의 리플글을 보고 올립니다.
웹호스팅 사용자를 위한 쉘스크립트이고 서로 자기 서버 상태에 맞게끔 수정한채로 돌아다니는거라 원 제작자는 누군지 모르겠습니다.

주요기능
1 계정(SSH/Telnet) 암호 변경
2 계정(HDD) 사용량 조회
3 계정(HDD) 백업
4 데이타베이스(MySQL) 암호변경
5 데이타베이스(MySQL) 백업
6 데이타베이스(MySQL) 복구
7 데이타베이스(MySQL) 초기화
8 알지보드설치
9 제로보드설치
10. 그누보드 설치
11 블로그(테터툴즈) 설치

이고 다운로드 받으신 후 파일 소스중 제로보드, 알지보드,  그누보드, 테터툴즈의 경로를 설정한 뒤 자신의 계정에 업로드 하시고 파일에 실행권한을 주신 후 실행 하시면 됩니다.

chmod 700 gnu
./gnu

다음은 소스입니다.

#!/bin/bash

##############################################################################
#
# 프로그램 명 : GNU 쉘 메니져
#
##############################################################################

##############################################################################
# 각종변수 설정
##############################################################################
# 버전
VERSION="1.0"
# mysql 경로
MYSQL_EXEC="mysql"
# mysqldump 경로
MYSQLDUMP_EXEC="mysqldump"
# 알지보드 파일 경로
RGBOARD_FILE=""
# 제로보드 파일 경로
ZEROBOARD_FILE=""
# 그누보드 파일 경로
GNUBOARD_FILE=""
# 테터툴즈 파일 경로
TATTER_FILE=""
# 웹 절대 경로
WEB_ROOT=""

# 계정명
USER=`whoami`
# 절대경로
PWD=`cd ~;pwd`

if [ "$USER" = "" ]; then
  echo "계정명을 알 수 없습니다.
서버관리자에게 문의하세요."
  exit 1
fi

##############################################################################
# 웹 절대경로를 찾는다. 우선 순위 html , www , public_html , 계정 루트
##############################################################################
WEB_ROOT=$PWD
# html 디렉토리가 있다면
if [ -d "$PWD/html" ]; then
  WEB_ROOT="$PWD/html"
fi

# www 디렉토리가 있다면
if [ -d "$PWD/www" ]; then
  WEB_ROOT="$PWD/www"
fi

# public_html 디렉토리가 있다면
if [ -d "$PWD/public_html" ]; then
  WEB_ROOT="$PWD/public_html"
fi
##############################################################################

##############################################################################
# 계정 암호를 변경
##############################################################################
PASSWORD_CHANG() {
  clear
  echo "===================================================================
                          계정 암호 변경
===================================================================
1. Telnet/SSH/FTP 암호가 동시에 변경됩니다.
2. 데이타베이스(Mysql) 암호는 변경되지 않습니다.

3. 암호 변경 방법
  (current) UNIX password: [현재 암호 입력]
  New password: [변경할 암호 입력]
  Retype new password: [변경 암호 재입력]

4. 입력한 암호는 표시되지 않습니다.
5. 영문자와 숫자로 6자 이상 연속된 문자를 제외하고 입력하세요.
";
  passwd
  if [ "$?" = "0" ]; then
    echo "정상적으로 변경되었습니다."
  else
    echo "암호 변경시 에러가 발생했습니다."
  fi
}

##############################################################################
# 계정 사용량 조회
##############################################################################
HDD_QUOTA() {
  clear
  echo "===================================================================
                        계정(HDD) 사용량 조회
===================================================================
"
  quota -s
  echo "
1. blocks : 현재 사용중인 용량
2. 첫번째 quota : 현재 사용자가 사용할 수 있는 용량
3. 첫번째 limit : 현재 사용자가 사용할 수 있는 한계치
4. 용량표시가 없는경우 Kbyte 단위입니다.";
}

##############################################################################
# 계정 백업
##############################################################################
HDD_BACKUP() {
  clear
  echo -n "===================================================================
                          계정(HDD) 백업
===================================================================
1. 새로 만들어질 백업파일의 크기가 남은 HDD 사용량을 초과 할 경우
  에러가 발생할수 있습니다. 사용하지 않는 파일을 삭제 후 백업하세요.

2. 일부 업로드된 파일은 에러가 발생할 수 있습니다.

3. 기존 backup- 으로 시작하는 파일은 삭제가 됩니다.

백업하시겠습니까? [yes]/no : "
  read key

  if [ "$key" == "" ]; then
    key="yes"
  fi

  if [ "$key" != "yes" ]; then
    echo "취소하셨습니다."
    return 1
  fi

  BACKUP_FILE_NAME="backup-"`date +%Y%m%d`".tar.gz"
  BACKUP_FILE="$WEB_ROOT/$BACKUP_FILE_NAME"
  echo "백업 파일명 : $BACKUP_FILE_NAME"
  echo "백업중 ... (백업이 완료될 때까지 기다려 주세요.)"
  cd ~
  if [ -f "$BACKUP_FILE_NAME" ]; then
    rm $BACKUP_FILE_NAME
  fi

  for file in $WEB_ROOT/backup-*
  do
    if [ -f "$file" ]; then
      rm $file
    fi
  done

  tar zcf $BACKUP_FILE_NAME *
  echo "백업 종료 ..."
  mv $BACKUP_FILE_NAME $BACKUP_FILE
  echo "$BACKUP_FILE 으로 백업되었습니다."
  echo "다운로드 위치 : http://도메인명/$BACKUP_FILE_NAME"
}

##############################################################################
# 데이타베이스(MYSQL) 암호 변경
##############################################################################
MYSQL_PASSWORD_CHANG() {
  clear
  echo "===================================================================
                    데이타베이스(MYSQL) 암호변경
===================================================================
1. 암호는 공백없이 영문자, 숫자로 입력하세요.

2. 암호를 변경시 MYSQL을 사용하는 프로그램의 설정도 변경해야 합니다.

3. 암호는 화면에 표시되지 않습니다.
"
  echo -n "데이타베이스 유저 아이디 [$USER] : "; read DBUSER
  echo -n "데이타베이스 기존 암호 : "; read -s DBPASSWORD; echo
  echo -n "데이타베이스 새 암호 : "; read -s DBNEWPASSWORD1; echo
  echo -n "데이타베이스 암호 확인 : "; read -s DBNEWPASSWORD2; echo

  if [ "$DBUSER" == "" ]; then
    DBUSER="$USER"
  fi

  if [ "$DBPASSWORD" == "" ]; then
    echo "기존 암호를 입력하세요."
    return 1
  fi

  if [ "$DBNEWPASSWORD1" == "" ]; then
    echo "새 암호를 입력하세요."
    return 1
  fi

  if [ "$DBNEWPASSWORD1" != "$DBNEWPASSWORD2" ]; then
    echo "새 암호가 동일하지 않습니다."
    return 1
  fi

  $MYSQL_EXEC -u$DBUSER -p$DBPASSWORD -e "set password=password('$DBNEWPASSWORD1');"

  if [ "$?" = "0" ]; then
    echo "정상적으로 변경되었습니다."
  else
    echo "암호 변경시 에러가 발생했습니다."
  fi
}

##############################################################################
# 데이타베이스(MYSQL) 백업
##############################################################################
MYSQL_BACKUP() {
  clear
  echo "===================================================================
                    데이타베이스(MYSQL) 백업
===================================================================
1. 새로 만들어질 백업파일의 크기가 남은 HDD 사용량을 초과 할 경우
  에러가 발생할수 있습니다. 사용하지 않는 파일을 삭제후 백업하세요.

2. 기존 mysql- 으로 시작하는 파일은 삭제가 됩니다.

3. 암호는 화면에 표시되지 않습니다.

백업하시겠습니까? [yes]/no : "
  read key

  if [ "$key" == "" ]; then
    key="yes"
  fi

  if [ "$key" != "yes" ]; then
    echo "취소하셨습니다."
    return 1
  fi

  echo -n "데이타베이스 유저 아이디 [$USER] : "; read DBUSER
  echo -n "데이타베이스 암호 : "; read -s DBPASSWORD; echo

  if [ "$DBUSER" == "" ]; then
    DBUSER="$USER"
  fi

  if [ "$DBPASSWORD" == "" ]; then
    echo "기존 암호를 입력하세요."
    return 1
  fi

  BACKUP_FILE_NAME="mysql-"`date +%Y%m%d`".sql"
  BACKUP_FILE="$WEB_ROOT/$BACKUP_FILE_NAME"
  echo "백업 파일명 : $BACKUP_FILE_NAME"
  echo "백업중 ... (백업이 완료될 때까지 기다려 주세요.)"
  cd ~
  if [ -f "$BACKUP_FILE_NAME" ]; then
    rm $BACKUP_FILE_NAME
  fi

  for file in $WEB_ROOT/mysql-*
  do
    if [ -f "$file" ]; then
      rm $file
    fi
  done

  $MYSQLDUMP_EXEC -u$DBUSER -p$DBPASSWORD $DBUSER > $BACKUP_FILE_NAME

  if [ "$?" != "0" ]; then
    echo "에러가 발생했습니다."
    return 1
  fi

  echo "백업 종료 ..."
  mv $BACKUP_FILE_NAME $BACKUP_FILE
  echo "$BACKUP_FILE 으로 백업되었습니다."
  echo "다운로드 위치 : http://도메인명/$BACKUP_FILE_NAME"
}

##############################################################################
# 데이타베이스(MYSQL) 복구
##############################################################################
MYSQL_RESTORE() {
  clear
  echo "===================================================================
                    데이타베이스(MYSQL) 복구
===================================================================
1. 백업파일은 계정의 루트 또는 웹 디렉토리에 올려 주세요.

2. 복구할 데이타베이스 백업 파일을 입력하세요.

3. 중복된 테이블이 있을 경우 에러가 발생하므로 데이타베이스를
  초기화 하신 후 복구 하십시요.

4. 암호는 화면에 표시되지 않습니다.
"
  echo -n "데이타베이스 유저 아이디 [$USER] : "; read DBUSER
  echo -n "데이타베이스 암호 : "; read -s DBPASSWORD; echo
  echo -n "데이타베이스 백업 파일명 : "; read SQL_FILE;

  if [ "$DBUSER" == "" ]; then
    DBUSER="$USER"
  fi

  if [ "$DBPASSWORD" == "" ]; then
    echo "기존 암호를 입력하세요."
    return 1
  fi
 
  BACKUP_FILE=""

  if [ -f "$WEB_ROOT/$SQL_FILE" ]; then
    BACKUP_FILE="$WEB_ROOT/$SQL_FILE"
  fi

  if [ -f "$PWD/$SQL_FILE" ]; then
    BACKUP_FILE="$PWD/$SQL_FILE"
  fi

  if [ "$BACKUP_FILE" == "" ]; then
    echo "백업 파일을 찾을 수 없습니다. 파일명을 확인하세요."
    return 1
  fi

  echo "복구 파일명 : $BACKUP_FILE"
  echo -n "복구하시겠습니까? [yes]/no : "
  read key

  if [ "$key" == "" ]; then
    key="yes"
  fi

  if [ "$key" != "yes" ]; then
    echo "취소하셨습니다."
    return 1
  fi

  echo "복구중 ... (완료될 때까지 기다려 주세요)"

  $MYSQL_EXEC -u$DBUSER -p$DBPASSWORD $DBUSER < $BACKUP_FILE

  if [ "$?" != "0" ]; then
    echo "에러가 발생했습니다."
    return 1
  fi

  echo "복구 성공 ..."
}

##############################################################################
# 데이타베이스(MYSQL) 초기화
##############################################################################
MYSQL_ALL_TABLE_DELETE() {
  clear
  echo "===================================================================
                    데이타베이스(MYSQL) 초기화
===================================================================
1. 데이타베이스내의 모든 테이블을 삭제하오니 신중히 실행 하십시요.

2. 암호는 화면에 표시되지 않습니다.
"
  echo -n "데이타베이스 유저 아이디 [$USER] : "; read DBUSER
  echo -n "데이타베이스 암호 : "; read -s DBPASSWORD; echo

  if [ "$DBUSER" == "" ]; then
    DBUSER="$USER"
  fi

  if [ "$DBPASSWORD" == "" ]; then
    echo "기존 암호를 입력하세요."
    return 1
  fi
 
  TABLE_LIST=`$MYSQL_EXEC -u$DBUSER -p$DBPASSWORD $DBUSER -e "show tables" | grep -v "Tables_in_"`

  if [ "$?" != "0" ]; then
    echo "이미 초기화된 상태이거나 에러가 발생했습니다."
    return 1
  fi

  if [ "$TABLE_LIST" == "" ]; then
    echo "이미 초기화된 상태입니다."
    return 1
  fi

  echo -n "모든 테이블을 삭제하시겠습니까? yes/[no] : "
  read key

  if [ "$key" != "yes" ]; then
    echo "취소하셨습니다."
    return 1
  fi
 
  echo "삭제중 ... (완료될 때까지 기다려 주세요.)"

  for TABLE in $TABLE_LIST
  do
#    echo "테이블 삭제 => $TABLE"
    $MYSQL_EXEC -u$DBUSER -p$DBPASSWORD $DBUSER $dbname -e "drop table $TABLE"
  done
 
  if [ "$?" != "0" ]; then
    echo "에러가 발생했습니다."
    return 1
  fi

  echo "$DBUSER 이 성공적으로 초기화 되었습니다"
}

##############################################################################
# 알지보드 설치
##############################################################################
RGBOARD_INSTALL() {
  clear
  echo -n "===================================================================
                          알지보드 설치
===================================================================
1. 알지보드를 설치합니다.
2. 이미 설치 되어 있다면 덮어 쓰게 됩니다.

설치하시겠습니까? [yes]/no : "
  read key

  if [ "$key" == "" ]; then
    key="yes"
  fi

  if [ "$key" != "yes" ]; then
    echo "취소하셨습니다."
    return 1
  fi

  if [ ! -f "$RGBOARD_FILE" ]; then
    echo "알지보드 설치 파일을 찾을 수 없습니다."
    return 1
  fi

  cd $WEB_ROOT
  tar zxf $RGBOARD_FILE
  chmod 707 rgboard/data

  echo "성공적으로 설치되었습니다.
http://도메인명/rgboard/admin/install.php 으로 접속하세요.
관리자 페이지 : http://도메인명/rgboard/admin

자세한 사용법은 홈페이지(http://www.rgboard.com)를 참고하십시요."
}

##############################################################################
# 제로보드 설치
##############################################################################
ZEROBOARD_INSTALL() {
  clear
  echo -n "===================================================================
                          제로보드 설치
===================================================================
1. 제로보드를 설치합니다.
2. 이미 설치 되어있다면 덮어 쓰게 됩니다.

설치하시겠습니까? [yes]/no : "
  read key

  if [ "$key" == "" ]; then
    key="yes"
  fi

  if [ "$key" != "yes" ]; then
    echo "취소하셨습니다."
    return 1
  fi

  if [ ! -f "$ZEROBOARD_FILE" ]; then
    echo "제로보드 설치 파일을 찾을 수 없습니다."
    return 1
  fi

  cd $WEB_ROOT
  tar zxf $ZEROBOARD_FILE
  chmod 707 bbs

  echo "성공적으로 설치되었습니다.
http://도메인명/bbs/install.php 으로 접속하세요.
관리자 페이지 : http://도메인명/bbs/admin.php

자세한 사용법은 홈페이지(http://www.nzeo.com)를 참고하십시요."
}

##############################################################################
# 그누보드 설치
##############################################################################
GNUBOARD_INSTALL() {
clear
echo -n "===================================================================
                      그누보드 설치
===================================================================
1. 그누보드를 설치합니다.
2. 이미 설치 되어 있다면 덮어 쓰게 됩니다.

설치하시겠습니까? [yes]/no : "
read key

if [ "$key" == "" ]; then
key="yes"
fi

if [ "$key" != "yes" ]; then
echo "취소하셨습니다."
return 1
fi

if [ ! -f "$GNUBOARD_FILE" ]; then
echo "그누보드 설치 파일을 찾을 수 없습니다."
return 1
fi

cd $WEB_ROOT
tar zxf $GNUBOARD_FILE
chmod 707 gnu3

echo "성공적으로 설치되었습니다.
http://도메인명/gnu3/install/install.php 로 접속하세요.

자세한 사용법은 홈페이지(http://www.sir.co.kr)를 참고하십시요."
}

##############################################################################
# 블로그(테터툴즈) 설치
##############################################################################
TATTER_INSTALL() {
  clear
  echo -n "===================================================================
                        블로그(테터툴즈) 설치
===================================================================
1. 블로그(테터툴즈)를 설치합니다.
2. 이미 설치 되어 있다면 덮어 쓰게 됩니다.

설치하시겠습니까? [yes]/no : "
  read key

  if [ "$key" == "" ]; then
    key="yes"
  fi

  if [ "$key" != "yes" ]; then
    echo "취소하셨습니다."
    return 1
  fi

  if [ ! -f "$TATTER_FILE" ]; then
    echo "테터툴즈 설치파일을 찾을 수 없습니다."
    return 1
  fi

  cd $WEB_ROOT
  tar zxf $TATTER_FILE
  chmod 707 tt

  echo "성공적으로 설치되었습니다.
http://도메인명/tt/install.php 으로 접속하세요.
관리자 페이지 : http://도메인명/tt/admin/article.php

자세한 사용법은 홈페이지(http://www.tattertools.com)를 참고하십시요."
}

##############################################################################
# 웹 절대 경로 변경
##############################################################################
WEB_ROOT_CHANGE() {
  clear
  echo -n "===================================================================
                        웹 절대 경로 설정 변경
===================================================================
1. 홈페이지 절대경로를 수정합니다.
2. 홈페이지를 올리시는 실제 경로를 입력하세요.
3. 실제 홈페이지 경로가 변경되는 것은 아닙니다.
4. 현재 $WEB_ROOT 로 설정되어 있습니다.

경로변경 : $PWD/"
  read WEB_PATH

  if [ ! -d "$PWD/$WEB_PATH" ]; then
    echo "$PWD/$WEB_PATH 를 찾지 못했습니다."
    echo "경로가 수정되지 않았습니다."
    return 1
  fi

  if [ "$WEB_PATH" != "" ]; then
    WEB_PATH="$PWD/$WEB_PATH"
  else
    WEB_PATH="$PWD"
  fi

  echo -n "$WEB_PATH 로 수정하시겠습니까? [yes]/no:"
  read key

  if [ "$key" == "" ]; then
    key="yes"
  fi

  if [ "$key" == "yes" ]; then
    WEB_ROOT="$WEB_PATH"
    echo "$WEB_ROOT 로 변경되었습니다."
  else
    echo "변경되지 않았습니다."
  fi
}

while [ : ]
do
  clear
  echo -n "===================================================================
  GNU 쉘 메니져 V$VERSION (번호를 선택하세요.)
===================================================================
  계정명 : $USER, 웹 절대 경로 : $WEB_ROOT
===================================================================
  1. 계정(SSH/Telnet) 암호 변경 |  4. 데이타베이스(MySQL) 암호변경
  2. 계정(HDD) 사용량 조회      |  5. 데이타베이스(MySQL) 백업
  3. 계정(HDD) 백업            |  6. 데이타베이스(MySQL) 복구
                                |  7. 데이타베이스(MySQL) 초기화
 11. 알지보드 설치              | 13. 그누보드 설치
 12. 제로보드 설치              | 14. 블로그(테터툴즈) 설치

 11. 웹 절대 경로 설정변경          쉘 매니저 강제 종료 : Ctrl + C
 99. 쉘 매니저 종료                글수정 : Ctrl+Backspace
===================================================================
  번호를 입력하세요 : "
  read menu

  case "$menu" in
    "1") PASSWORD_CHANG;;
    "2") HDD_QUOTA;;
    "3") HDD_BACKUP;;
    "4") MYSQL_PASSWORD_CHANG;;
    "5") MYSQL_BACKUP;;
    "6") MYSQL_RESTORE;;
    "7") MYSQL_ALL_TABLE_DELETE;;
    "11") RGBOARD_INSTALL;;
    "12") ZEROBOARD_INSTALL;;
    "13") GNUBOARD_INSTALL;;
    "14") TATTER_INSTALL;;
    "21") WEB_ROOT_CHANGE;;
    "99") break;;
    *) echo "다시 선택해주세요.";;
  esac
  echo
  echo -n "[Enter]키를 눌러주세요.";read
done
clear
echo "GNU 쉘 메니져 V$VERSION 을 종료합니다."
echo "완전히 종료를 하시려면 Ctrl+D 또는 exit 명령을 입력하십시요."
echo


관리자님 혹시 저작권상 문제가 생기면 삭제 부탁드립니다.
추천
0

댓글 전체

원제작 http://rgro.net/ (위 스크립트는 실제 알지로웹호스팅서비스에 이용하는걸로 알고있습니다.)
그누보드 까지 설치하는건 PHPSCHOOL 팁텍 게시판에 있져
전체 1,026
그누3 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT