1 2 3 4 5 6 L

Page Header > Subtitle

사용자 계정 추가, mysql 계정추가등 shell script

#!/bin/bash
 
########### 변수 설정 ###########################################
export LANG=c
Version="1.0"
VersionDate="2017.11.14"
 
 
# 명령어 경로
napache="/home/apache"
IPTABLES="/sbin/iptables"
IPADDR=`ifconfig -a | grep "inet addr" | egrep -v '127.0.0.1' | awk -F"[:]" '{print $2}' | awk '{print $1}' | head -1`;
 
# 메뉴 출력
_Menu() {
 
cat << !END!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ${GREEN}서${GREEN}버${GREEN}호${CEND}${GREY}스${CEND}${DARKBLUE}팅${CEND} ${RED}계${CEND}${GREEN}정${CEND} ${GREY}관${CEND}${RED}리${CEND}${DARKBLUE}툴${CEND} ${RED}v${CEND} ${GREEN}$Version${CEND}
 $Writer
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$GREY+-----------------------------------------------+$CEND
${GREY}+----- linux 계정 생성 및 설정 ----------------+${CEND}
   1. 사용자 계정 추가하기 (useradd)
   2. 사용자 계정 삭제하기 (userdel)
   3. 아파치 가상호스트 추가하기 (virtualhost)
   4. MysQL 계정 추가하기
   5. iptables Tcp Port allow 설정하기
   6. iptables TCP port 차단설정하기
   7. black ip 차단하기
   q. Quit
$GREY+-----------------------------------------------+$CEND
!END!
 
echo "  1번부터 순차적으로 실행, 또는 원하는 번호만 실행 가능"
echo -n "  원하는 번호를 선택하세요 (1-7,q) : "
 
}
 
clear
 
 
while [ 1 ]; do
        clear
        _Menu
        read input
 
        case $input in
 
 
        1)
        echo ""
        echo "사용자 계정추가작업을 시작합니다."
        echo -n "사용자 계정: "
        read id
        echo -n "사용자 암호: "
        read pass
 
        if [ X$id = X ]; then
                echo -n "  ${DARKGREEN}사용자계정을 정확히 입력해주세요${CEND} "
                read
                continue
                echo
        fi
 
 
        if [ X$pass = X ]; then
                echo -n "  ${DARKGREEN}Password를 정확히 입력해주세요${CEND} "
                read
                continue
                echo
        fi
 
       #계정 ID 추가
        useradd -d /home/users/$id $id
 
        #패스 워드 추가
        echo "$pass" | passwd --stdin "$id"
 
        #폴더 권한 수정
        mkdir -p /home/users/$id
        mkdir -p /home/users/$id/www
        chmod 711 /home/users
        chmod 755 /home/users/$id
        chmod 755 /home/users/$id/www
        chown -R $id.$id /home/users/$id
 
 
        echo "+---------------------------------------------+"
 
        echo ""
        echo "          추가된 사용자 계정명과 암호 입니다."
        echo ""
        echo "          사용자 계정: $id"
        echo "          사용자 암호: $pass"
        echo "          절대경로: /home/users/$id"
        echo ""
        echo "          사용자 추가를 완료했습니다."
        echo ""
        echo "+---------------------------------------------+"
        echo ""
        echo ""
 
        echo
        echo -n "  ${DARKGREEN}Next -> Enter${CEND} "
        read
        continue
        echo
        ;;
 
        # ---------------- 사용자계정 삭제  --------------------------------------
 
       2)
        echo ""
        echo "  사용자 계정삭제작업을 시작합니다"
 
        echo -n "삭제할사용자 계정: "
        read nid
 
        if [ X$nid = X ]; then
                echo -n "  ${DARKGREEN}삭제할 계정을 정확히 입력해주세요${CEND} "
                read
                continue
                echo
        fi
 
 
        #계정 ID 제거
        userdel -r $nid
        echo ""
        echo "+---------------------------------------------+"
 
        echo ""
        echo "    $id 사용자의 모든 데이터 및 계정 삭제완료"
        echo ""
        echo "+---------------------------------------------+"
 
        echo ""
        echo ""
 
        echo
        echo -n "  ${DARKGREEN}Next -> Enter${CEND} "
        read
        continue
        echo
        ;;
 
        # ---------------- apache virtualhost add  --------------------------------------
 
 
 
       3)
        echo ""
        echo " apache 가상호스트 설정을 추가합니다."
        echo
        echo -n "도메인 주소: "
        read url
        echo -n "사용자 계정: "
        read vid
 
        if [ X$url = X ]; then
                echo -n "  ${DARKGREEN}도메인주소를 정확히 입력해주세요${CEND} "
                read
                continue
                echo
        fi
 
        if [ X$vid = X ]; then
                echo -n "  ${DARKGREEN}가상호스트에 연결할 계정을  정확히 입력해주세요${CEND} "
                read
                continue
                echo
        fi
 
       # /home/apache/conf/httpd.conf  #httpd-vhosts.conf 주석해제
 
        `perl -i -pe "s/#Include conf\/extra\/httpd-vhosts.conf/Include conf\/extra\/httpd-vhosts.conf/g" /home/apache/conf/httpd.conf`
 
        echo " 사용자 도메인 : $url"
        echo " 사용자 계정 : $vid"
        echo ""
        echo "# $url" >> $napache/conf/extra/httpd-vhosts.conf
        echo "<VirtualHost *:80>" >> $napache/conf/extra/httpd-vhosts.conf
        echo "DocumentRoot /home/users/$vid/www" >> $napache/conf/extra/httpd-vhosts.conf
        echo "ServerName $url" >> $napache/conf/extra/httpd-vhosts.conf
        echo "ServerAlias <a href="" target="_blank">www.$url</a>" >> $napache/conf/extra/httpd-vhosts.conf
        echo "ErrorLog logs/$url-error_log" >> $napache/conf/extra/httpd-vhosts.conf
        echo "CustomLog logs/$url-access_log common" >> $napache/conf/extra/httpd-vhosts.conf
 
        echo " "
        echo "<Directory /home/users/$vid/www>" >> $napache/conf/extra/httpd-vhosts.conf
      echo "  Options FollowSymLinks Includes ExecCGI" >>  $napache/conf/extra/httpd-vhosts.conf
echo "AllowOverride All" >> $napache/conf/extra/httpd-vhosts.conf
echo "Order allow,deny" >> $napache/conf/extra/httpd-vhosts.conf
echo "Allow from all" >> $napache/conf/extra/httpd-vhosts.conf
echo " Deny from env=go_out">>  $napache/conf/extra/httpd-vhosts.conf
echo "</Directory>" >>  $napache/conf/extra/httpd-vhosts.conf
 
        echo "</VirtualHost>" >> $napache/conf/extra/httpd-vhosts.conf
 
        #아파치 reload
        #/home/apache/bin/apachectl graceful
 
       echo $q_httpd_syntax_check
       $napache/bin/apachectl configtest
       if [ $? != 0 ]; then
       echo ""
       echo "아파치 설정에 잘못된 오류가 있습니다. 설정체크후 아파치 재시작하세요"
       echo "$q_httpd_syntax_check_not_ok";
       #fi
       else
       $napache/bin/apachectl graceful
       echo "apachectl restart ok"
       fi
       #echo $q_httpd_syntax_check_ok
 
        echo ""
        echo "+---------------------------------------------+"
 
        echo ""
        echo "          추가된 가상 호스트 정보 입니다."
        echo ""
        echo "          사용자 도메인: $url"
        echo "          사용자 계정: $vid"
        echo "          DocumentRoot : /home/users/$vid"
        echo ""
        echo "+---------------------------------------------+"
        #fi
        echo
        echo "  ######### apache Virtualhost Setting is completed! ###########"
        echo
        echo -n "  ${DARKGREEN}Next -> Enter${CEND} "
        read
        continue
        echo
        ;;
 
        4)
        echo ""
        echo "MySQL 계정을 추가합니다."
        echo
        echo -n "MySQL 계정: "
        read dbid
        echo -n "MySQL 암호: "
        read dbpass
 
 
        if [ X$dbid = X ]; then
                echo -n "  ${DARKGREEN}mysql DB 계정을 정확히 입력해주세요${CEND} "
                read
                continue
                echo
        fi
 
       if [ X$dbpass = X ]; then
                echo -n "  ${DARKGREEN}Mysql DB 패스워드를 정확히 입력해주세요${CEND} "
                read
                continue
                echo
        fi
 
        echo "create database $dbid; GRANT ALL PRIVILEGES ON $dbid.* TO $<a href="mailto:dbid@localhost">dbid@localhost</a> IDENTIFIED by '$dbpass';" > ./tmp_pass
 
        echo "
        MySQL 루트 암호를 입력하세요."
 
        mysql -u root -p mysql < ./tmp_pass
 
        rm -f ./tmp_pass
 
 
        echo ""
        echo "+---------------------------------------------+"
 
        echo ""
        echo "          추가된 MySQL DB 정보 입니다."
        echo "          MySQL hostinfo : localhost"
        echo "          MySQL DB : $dbid"
        echo "          MySQL 사용자 계정: $dbid"
        echo "          MySQL 사용자 암호: $dbpass"
        echo ""
        echo "+---------------------------------------------+"
        echo
        echo "  ######### mysql user Setting is completed! ###########"
        echo
        echo -n "  ${DARKGREEN}Next -> Enter${CEND} "
        read
        continue
        echo
        ;;
 
        5)
        echo ""
        echo "            < iptables TCP Port 허용설정  >   "
        echo "      iptables TCP port allow 추가작업을 시작합니다"
        echo ""
        echo "tcp port 번호를 입력하세요"
        sleep 1
        echo -n "Tcp port: "
        read _portallow
 
        if [ X$_portallow = X ]; then
                echo -n "  ${DARKGREEN}tcp port 번호를 입력해주세요${CEND} "
                read
                continue
                echo
        fi
        sleep 1
 
#        if [[ $server_vendor = [aA] ]];then
 
      $IPTABLES -A INPUT -p tcp -m multiport -s 0.0.0.0/0 -d $IPADDR --dport $_portallow -j ACCEPT
 
#      echo ""
#      echo "tcp port : $_portallow accept ok"
#      echo "iptables 설정확인 : `iptables -nvL | grep $_portallow`"
 
#        elif [[ $server_vendor = [dD] ]];then
 
#        fi
 
        echo ""
        echo "+---------------------------------------------+"
        echo "          추가된 port 정보입니다"
        echo ""
        echo "          iptables allow tcp port : $_portallow"
        echo "          `iptables -nvL | grep $_portallow`"
        echo ""
        echo "+---------------------------------------------+"
        echo
        echo "  ######### iptables allow Setting is completed! ###########"
        echo
        echo -n "  ${DARKGREEN}Next -> Enter${CEND} "
        read
        continue
        echo
        ;;
 
        6)
        echo ""
        echo "            < iptables TCP Port 차단설정  >   "
        echo "      iptables TCP port 차단작업을 시작합니다"
        echo ""
        echo "차단할 tcp port 번호를 입력하세요"
        sleep 1
        echo -n "Tcp port: "
        read _bportallow
 
        if [ X$_bportallow = X ]; then
                echo -n "  ${DARKGREEN}차단할 tcp port 번호를 입력해주세요${CEND} "
                read
                continue
                echo
        fi
        sleep 1
 
#        if [[ $server_vendor = [aA] ]];then
 
      $IPTABLES -A INPUT -p tcp --dport $_bportallow -j DROP
 
#  echo ""
#      echo "tcp port : $_portallow accept ok"
#      echo "iptables 설정확인 : `iptables -nvL | grep $_portallow`"
 
#        elif [[ $server_vendor = [dD] ]];then
 
#        fi
 
        echo ""
        echo "+---------------------------------------------+"
        echo "          차단된 port 정보입니다"
        echo ""
        echo "          iptables drop tcp port : $_bportallow"
#        echo "          `iptables -nvL | grep $_bportallow`"
        echo ""
        echo "+---------------------------------------------+"
        echo
        echo "  ######### iptables port drop setting is completed! ###########"
        echo
        echo -n "  ${DARKGREEN}Next -> Enter${CEND} "
        read
        continue
        echo
        ;;
 
 
        7)
        echo ""
        echo "            < iptables black ip 차단설정  >   "
        echo "             black ip 차단작업을 시작합니다"
        echo ""
        echo "차단할 IP 주소를 입력하세요"
        sleep 1
        echo -n "block ip : "
        read _blip
 
        if [ X$_blip = X ]; then
                echo -n "  ${DARKGREEN}차단할 IP 주소를 정확히 입력해주세요${CEND} "
                read
                continue
                echo
        fi
        sleep 1
 
#        if [[ $server_vendor = [aA] ]];then
 
      $IPTABLES -A INPUT -s $_blip -j DROP
 
#      echo ""
#      echo "tcp port : $_portallow accept ok"
#      echo "iptables 설정확인 : `iptables -nvL | grep $_portallow`"
 
#        elif [[ $server_vendor = [dD] ]];then
 
#        fi
 
 
        echo ""
        echo "+---------------------------------------------+"
        echo "          차단된 IP 정보입니다"
        echo ""
        echo "          black ip : $_blip"
        #echo "          `iptables -nvL | grep $_blip`"
        echo ""
        echo "+---------------------------------------------+"
 
 
        echo "  ######### iptables Setting is completed! ###########"
        echo -n "  ${DARKGREEN}Next -> Enter${CEND} "
        read
        continue
        echo
        ;;
 
        # ---------------- 기타 메뉴 ---------------------------------------------
 
        10|11|12|13|14|15|16|17|18|19|20)
        echo -n "  ${GREEN}1 - 4번 사이의 메뉴를 선택해주세요${CEND} "
        read
        echo
        ;;
 
       q)
        echo -n "  프로그램을 종료하시겠습니까? (y/n) : "
        stty -echo
        read yesno
        stty echo
        echo
 
        if [ "X$yesno" = "Xy" ]; then
                echo "  ${GREEN}계정 관리툴을 종료합니다. ${CEND} "
                echo
                exit
        fi
        ;;
 
 
        *)
        echo -n "  번호를 잘 선택하세요."
        read
        echo
        ;;
 
        # case문의 끝
        esac
 
# while문의 끝
done
 
exit 0
 
# EOF
 
 

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

Server

번호 제목 글쓴이 날짜 조회수
67 Simple CORS using .htaccess file. 미도어묵 03-08 689
66 HTTPS/DNS 차단 이해하기 미도어묵 02-14 738
65 HTTP proxying cloudflare custom port 미도어묵 01-02 715
64 Nginx HTTPS Let's Encrypt 무료 인증서 설치하기 우분투 16.04 미도어묵 10-17 356
63 리눅스 sftp log 남기기 미도어묵 01-25 454
62 PHP | [CentOS 7] PHP 5.4 to PHP 7.1 업그레이드 미도어묵 01-22 618
61 우분투(ubuntu) kernel 업그레이드 시 boot 용량 부족, 의존성 문제 미도어묵 01-11 524
60 firewall.sh , reboot.sh 미도어묵 01-10 337
59 사용자 계정 추가, mysql 계정추가등 shell script 미도어묵 01-10 342
58 Ubuntu 한 서버에서 PHP, JSP 동시에 사용하기 미도어묵 01-08 352
57 Ubuntu JSP서버세팅 미도어묵 01-08 341
56 pid 값으로 강제 종료 스크립트. 미도어묵 12-22 335
55 mysql(mariadb) 테이블별 mysqldump 백업 - shell script 미도어묵 12-22 349
54 Cloudflare - Get visitors real IP without extension(cloudflare_realip.conf) 미도어묵 12-18 334
53 shell script 일정 이상 cpu 점유시 강제 kill 미도어묵 12-07 350
52 리눅스 모니터링 툴 htop 미도어묵 11-09 386
51 [OS X, Ubuntu] 터미널에서 tmux 사용해 보기 미도어묵 11-09 410
50 우분투 보안 업데이트만 설치하기 미도어묵 11-07 365
49 nginx config , rewrite, allow, deny(web && node) 미도어묵 11-01 337
48 특정 IP만 SSH 접속 허용하기 미도어묵 09-30 383