Linux WEB

웹 계정 추가 스크립트

2008.07.01 01:30

jook 조회 수:27229

ftp 계정, DB 계정, 가상호스트 추가 스크립트

apache, mysql 등의 버전차이에 따라 정상적으로 동작하지 않을 수도 있음.. ^^

=======================================================================================================
#!/bin/sh

sleep 1
# 사용자 계정 추가
echo "ftp 계정을 추가하시겠습니까?(y/n)"

read answer1

while [[ "$answer1" != "y" && "$answer1" != "n" && "$answer1" != "Y" && "$answer1" != "N" ]]
do
echo "잘못 입력하셨습니다. y 나 n 으로 입력해 주세요."
read answer1
done

if [ "$answer1" = y -o "$answer1" = Y ]
then
        echo "추가할 계정이름을 입력해 주세요."
        read username
        echo " "
        echo "$username 에서 사용할 패스워드를 입력해 주세요."
        if /usr/sbin/useradd $username; then
                /usr/bin/passwd $username
                chmod 701 /home/$username
                echo "$username 계정이 생성되었습니다."
        else
                echo " "
                echo "계정 생성에 실패 하였습니다. ERROR 라인을 확인 하시고 다시 시도하세요."
                echo " "
        fi
else [ "$answer1" = n -o "$answer1" = N ]
        echo "ftp 계정을 생성하지 않습니다."
fi

sleep 1
echo " "

# Database 추가
echo "DB 계정을 추가 하시겠습니까?(y/n)"

read answer2

while [[ "$answer2" != "y" && "$answer2" != "n" && "$answer2" != "Y" && "$answer2" != "N" ]]
do
echo "잘못 입력하셨습니다. y 나 n 으로 입력해 주세요."
read answer2
done

if [ "$answer2" = y -o "$answer2" = Y ]
then

        if netstat -nat | grep LISTEN | grep 3306 1>/dev/null
        then
                echo "추가할 DB명을 입력하고 엔터를 치세요."
                read db
                echo " "
                echo "사용할 DB user명을 입력하고 엔터를 치세요."
                read db_user
                echo " "
                echo "$db_user가 사용할 패스워드를 입력하고 엔터를 치세요."
                read passwd
                echo " "
                echo "create database $db;" >> query
                echo "use mysql;" >> query
                echo "insert into user (host,user,password) values('localhost','$db_user',password('$passwd'));" >> query
                echo "insert into db values('localhost','$db','$db_user','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y');" >> query
                echo "flush privileges" >> query
                echo "mysql root계정의 패스워드를 입력 하세요."
                echo "mysql root계정의 패스워드가 설정되어 있지 않다면, 그냥 엔터를 치세요."
                if /usr/local/mysql/bin/mysql -u root -p < query; then
                        echo " "
                        echo "mysql db 및 계정이 추가 완료되었습니다. 아래와 같이 접속을 하세요."
                        echo " "
                        echo "/usr/local/mysql/bin/mysql -u $db_user -p $db"
                        echo " "
                else
                        echo " "
                        echo "DB 생성에 실패 하였습니다. ERROR 라인을 확인 하시고 다시 시도하세요."
                        echo " "
                fi
                rm -rf query
        else
                echo "mysql 데몬이 실행되어 있지 않습니다."
                echo "mysql 데몬을 실행합니다."
                echo " "
                /usr/local/mysql/share/mysql/mysql.server start
                echo " "
                echo "추가할 DB명을 입력하고 엔터를 치세요."
                read db
                echo " "
                echo "사용할 DB user명을 입력하고 엔터를 치세요"
                read db_user
                echo " "
                echo "$db_user가 사용할 패스워드를 입력하고 엔터를 치세요."
                read passwd
                echo " "
                echo "create database $db;" >> query
                echo "use mysql;" >> query
                echo "insert into user (host,user,password) values('localhost','$db_user',password('$passwd'));" >> query
                echo "insert into db values('localhost','$db','$db_user','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y');" >> query
                echo "flush privileges" >> query
                echo "mysql root계정의 패스워드를 입력 하세요."
                echo "mysql root계정의 패스워드가 설정되어 있지 않다면, 그냥 엔터를 치세요."
                if /usr/local/mysql/bin/mysql -u root -p < query; then
                        echo " "
                        echo "mysql db 및 계정이 추가 완료되었습니다. 아래와 같이 접속을 하세요."
                        echo " "
                        echo "/usr/local/mysql/bin/mysql -u $db_user -p $db"
                        echo " "
                else
                        echo " "
                        echo "DB 생성에 실패 하였습니다. ERROR 라인을 확인 하시고 다시 시도하세요."
                        echo " "
                fi
                rm -rf query
        fi
else [ "$answer2" = n -o "$answer2" = N ]
        echo "DB 계정을 생성하지 않습니다."
fi

sleep 1
echo " "

# 가상호스트 추가
echo "가상호스트 추가를 하시겠습니까?(y/n)"

read answer3

while [[ "$answer3" != "y" && "$answer3" != "n" && "$answer3" != "Y" && "$answer3" != "N" ]]
do
echo "잘못 입력하셨습니다. y 나 n 으로 입력해 주세요."
read answer3
done

if [ "$answer3" = y -o "$answer3" = Y ]
then

        today=$(date +%y-%m-%d)
        ip=$(ifconfig | grep Bcast | awk '{print $2}'|cut -d: -f2)

        echo "추가할 도메인을 입력 하세요. ex) hostway.co.kr"
        read domain

        echo "DocumentRoot 디렉토리를 입력하세요. ex) /home/hostway/public_html"
        read Documentroot

        echo "관리자 e-mail 주소를 입력하세요. ex) admin@hostway.co.kr"
        read "email"

        if cat /usr/local/apache2/conf/httpd.conf | grep vhost | grep "#" 1>/dev/null
        then
        perl -pi -e 's/#Include conf/extra/httpd-vhosts.conf/Include conf/extra/httpd-vhosts.conf/g'  /usr/local/apache2/conf/httpd.conf
        mv /usr/local/apache2/conf/extra/httpd-vhosts.conf /usr/local/apache2/conf/extra/httpd-vhosts.conf-$today
        echo "NameVirtualHost $ip" > /usr/local/apache2/conf/extra/httpd-vhosts.conf
        echo " " >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
        echo "<VirtualHost $ip>" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
        echo "  ServerAdmin $email" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
        echo "  DocumentRoot $Documentroot" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
        echo "  ServerName $domain" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
        echo "  ServerAlias www.$domain" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
        echo "  ErrorLog logs/$domain-error_log" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
        echo "  CustomLog logs/$domain-access_log common" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
        echo "</VirtualHost>" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
        sleep 1
        echo "가상호스트 추가 작업이 완료되었습니다."
        echo "ftp 접속을 하셔서 $Documentroot 디렉토리에 홈페이지 자료를 업로드 하시기 바랍니다."
        /usr/local/apache2/bin/apachectl restart
        else
        cp /usr/local/apache2/conf/extra/httpd-vhosts.conf /usr/local/apache2/conf/extra/httpd-vhosts.conf-$today
        echo " " >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
        echo "<VirtualHost $ip>" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
                echo "  ServerAdmin $email" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
                echo "  DocumentRoot $Documentroot" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
                echo "  ServerName $domain" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
                echo "  ServerAlias www.$domain" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
                echo "  ErrorLog logs/$domain-error_log" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
                echo "  CustomLog logs/$domain-access_log common" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
                echo "</VirtualHost>" >> /usr/local/apache2/conf/extra/httpd-vhosts.conf
        sleep 1
        echo "가상호스트 추가 작업이 완료되었습니다."
        echo "ftp 접속을 하셔서 $Documentroot 디렉토리에 홈페이지 자료를 업로드 하시기 바랍니다."
        /usr/local/apache2/bin/apachectl restart
        fi
else [ "$answer3" = n -o "$answer3" = N ]
        echo "가상호스트를 추가하지 않습니다."
fi
=======================================================================================================

번호 제목 글쓴이 날짜 조회 수
43 PHP 업로드 파일 용량 제한 설정 호스트웨이 2012.07.06 10044
42 [Apache] Image 관련 Log 남기지 않기 호스트웨이 2012.07.13 9705
41 PHP 컴파일시 /usr/bin/ld: cannot find -lltdl 오류 호스트웨이 2012.07.13 12560
40 PHP 사용 시 특정함수 사용제한 하는 방법 호스트웨이 2012.08.03 11511
39 CentOS 6.3 에 apache, php, mysql, phpmyAdmin(LAMP) 설치하기 #1 호스트웨이 2012.08.07 17343
38 CentOS 6.3 에 apache, php, mysql, phpmyadmin(LAMP) 설치하기 #2 호스트웨이 2012.08.07 14203
37 nginx - redirect 설정 호스트웨이 2012.08.24 17883
36 Nginx 설치 호스트웨이 2012.08.31 14900
35 Apache Max Client 값 수정 호스트웨이 2012.08.31 19640
34 SSL 패스워드 삭제 하기 호스트웨이 2012.09.05 20690
33 apache internal dummy connection 로그 생성 방지하기 호스트웨이 2012.09.06 18705
32 아파치 실행시 libphp5.so 에러 호스트웨이 2012.09.14 13524
31 httpd-2.4 설치하기 호스트웨이 2012.09.27 14436
30 failed to open stream: Too many open files in 에러메시지 출력 시 해결방법 호스트웨이 2012.10.03 7626
29 apache 구동시 "파일 크기 제한을 초과함 $HTTPD -DSSL" 에러메시지 출력에 대한 해결방법 호스트웨이 2012.10.11 9405
28 Apache 재시작시 세션 끊어짐 현상 호스트웨이 2012.10.12 12761
27 [php] 세션 유지시간 설정하기 호스트웨이 2012.10.25 17807
26 CentOS6 64bit openssl 설치시 에러 조치사항 호스트웨이 2012.11.02 7609
25 Symbolic link not allowed or link target not accessible 에러 발생 시 호스트웨이 2012.11.16 10568
24 Ubuntu 아파치 웹서버에서 index.php 다운로드 창이 뜰 경우 호스트웨이 2012.12.13 8247