Linux WEB

웹 계정 추가 스크립트

2008.07.01 01:30

jook 조회 수:27225

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
=======================================================================================================

번호 제목 글쓴이 날짜 조회 수
23 PHP 컴파일시 에러 메세지가 나오는 경우 조치방법 호스트웨이 2012.12.14 10310
22 PHP 컴파일시 에러 메세지가 나오는 경우 조치방법-2 호스트웨이 2012.12.20 6123
21 아파치 특정폴더에 암호걸기 호스트웨이 2012.12.28 8163
20 64bit 에서 php 컴파일시 에러 메세지 발생 시 대처방법-3 호스트웨이 2012.12.28 8583
19 apache 쓸모없는 로그 남기지 않는 방법. 호스트웨이 2012.12.28 6758
18 apache 가상호스트(virtualhost) 사용하기 호스트웨이 2013.06.03 25682
17 Apache event MPM, Prefork MPM, Worker MPM 방식의 차이점 및 설치 시 설정 방법 호스트웨이 2014.07.20 26648
16 mod_evasive를 이용한 웹 DDoS 방어 호스트웨이 2014.08.19 13104
15 Apache-Tomcat Multi Instance 설정 file 호스트웨이 2015.05.28 10705
14 Apache 설치 후 WEB 403 Forbidden 에러 호스트웨이 2015.09.08 20312
13 WEB에 특정 IP접근 차단 호스트웨이 2015.09.10 10056
12 외부 링크 도용을 막기 위한 아파치 설정 호스트웨이 2015.09.11 8417
11 httpd.pid 파일 오류 메시지 (20014) 호스트웨이 2015.09.12 11910
10 Apache 동시접속자 수 알아내기 호스트웨이 2015.09.13 9306
9 Linux LVS 사용하기 호스트웨이 2015.09.16 10288
8 Apache Log 관리 방법 (Logrotate) 호스트웨이 2015.09.17 11177
7 웹부하 테스트 - httperf 호스트웨이 2015.09.18 8988
6 Alternative PHP Cache 설치 & 설정 호스트웨이 2015.09.18 6517
5 apache - mod_url 설치 호스트웨이 2015.09.18 10287
4 cronlog 설정 호스트웨이 2015.09.18 8047