A

웹호스팅 사용자를 위한 계정관리 스크립트

웹호스팅 사용자를 위한 계정관리 스크립트

#!/bin/bash
##############################################################################
#
# 프로그램명 : RGRO Shell Manager
# 버전 : 1.1
# 최종수정일 : 2004년 6월 24일
#
# 제작자 : 윤범석 (알지보드)
# 홈페이지 : http://rgboard.com , http://rgro.net
# 본 프로그램은 비상업적인 목적으로 사용 가능합니다.
#
##############################################################################

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

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

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

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

# www 디렉토리가 있다면
if [ -d "$PWD/www" ]; then
  WEB_ROOT="$PWD/www"
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://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://nzeo.com) 를 참고하십시요."
}

##############################################################################
# 블로그(테터툴즈)설치
##############################################################################
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://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 "===================================================================
  RGRO Shell Manager V$VERSION (번호를 선택하세요)
===================================================================
  계정명 : $USER, 웹절대경로 : $WEB_ROOT
===================================================================
  1. 계정(SSH/Telnet) 암호 변경 |  4. 데이타베이스(MySQL) 암호변경
  2. 계정(HDD) 사용량 조회      |  5. 데이타베이스(MySQL) 백업
  3. 계정(HDD) 백업             |  6. 데이타베이스(MySQL) 복구
                               |  7. 데이타베이스(MySQL) 초기화
  8. 알지보드설치
  9. 제로보드설치

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;;
  "8") RGBOARD_INSTALL;;
  "9") ZEROBOARD_INSTALL;;
  "10") TATTER_INSTALL;;
  "11") WEB_ROOT_CHANGE;;
  "99") break;;
  *) echo "다시 선택해주세요.";;
  esac
  echo
  echo -n "[Enter]키를 눌러주세요.";read
done

clear
echo "RGRO Shell Manager V$VERSION 을 종료합니다."
echo "완전이 종료를 하시려면 Ctrl+D 또는 exit 명령을 입력하십시요."
echo

[이 게시물은 관리자님에 의해 2011-10-31 17:32:05 Linux에서 이동 됨]
|

댓글 2개

정말 대박 자료네요 ^^
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
17년 전 조회 2,527
17년 전 조회 1,689
17년 전 조회 2,483
17년 전 조회 1,642
17년 전 조회 1,230
17년 전 조회 2,289
17년 전 조회 2,930
17년 전 조회 4,105
17년 전 조회 3,200
17년 전 조회 1,469
17년 전 조회 1,736
17년 전 조회 2,290
17년 전 조회 1,597
17년 전 조회 1,777
17년 전 조회 2,757
17년 전 조회 2,191
17년 전 조회 1,843
17년 전 조회 4,255
17년 전 조회 3,099
17년 전 조회 1,493
17년 전 조회 3,621
17년 전 조회 2,855
17년 전 조회 2,120
17년 전 조회 1,352
17년 전 조회 2,389
17년 전 조회 2,118
17년 전 조회 2,036
17년 전 조회 1,981
17년 전 조회 1,234
17년 전 조회 1,932
17년 전 조회 2,980
17년 전 조회 1,487
17년 전 조회 1,726
17년 전 조회 1,409
17년 전 조회 1,658
17년 전 조회 1,632
17년 전 조회 1,506
17년 전 조회 2,613
17년 전 조회 2,375
17년 전 조회 2,150
17년 전 조회 1,467
17년 전 조회 2,480
17년 전 조회 4,296
17년 전 조회 2,789
17년 전 조회 1,706
17년 전 조회 1,910
17년 전 조회 3,291
17년 전 조회 2,289
17년 전 조회 3,876
17년 전 조회 1,727
17년 전 조회 2,323
17년 전 조회 2,156
17년 전 조회 1,664
17년 전 조회 2,184
17년 전 조회 1,982
17년 전 조회 2,022
17년 전 조회 3,138
17년 전 조회 2,205
17년 전 조회 1,481
17년 전 조회 1,515
17년 전 조회 2,178
17년 전 조회 3,255
17년 전 조회 2,192
17년 전 조회 1,573
17년 전 조회 4,286
17년 전 조회 2,079
17년 전 조회 3,506
17년 전 조회 6,083
17년 전 조회 1,542
17년 전 조회 1,697
17년 전 조회 1,290
17년 전 조회 1,391
17년 전 조회 2,926
17년 전 조회 1,950
17년 전 조회 2,650
17년 전 조회 1,350
17년 전 조회 3,228
17년 전 조회 2,210
17년 전 조회 2,656
17년 전 조회 1,458
17년 전 조회 1,814
17년 전 조회 1,197
17년 전 조회 1,252
17년 전 조회 1,826
17년 전 조회 1,271
17년 전 조회 4,353
17년 전 조회 1,552
17년 전 조회 2,054
17년 전 조회 7,135
17년 전 조회 1,428
17년 전 조회 1,941
17년 전 조회 3,179
17년 전 조회 1,267
17년 전 조회 2,036
17년 전 조회 1,197
17년 전 조회 1,894
17년 전 조회 2,199
17년 전 조회 3,018
17년 전 조회 1,288
17년 전 조회 1,384