Engineer's tipLinux

ftp계정+mysql+가상호스트 생성 스크립트

#!/bin/sh

# written by Joo woo kwon – Oct 4 2007
echo “이 스크립트는 mysql5.0.x apache2.2.x 버전이외에서는 정상적으로 동작하지 않을 수 있습니다.”
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

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다