웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
계정 등록 스크립트
2002.12.05 02:11
아래 스크립트는 제가 개인서버를 운영하면서 계정 등록시 사용목적으로 작성했습니다.
레드햇 7.3 에서 작동확인 했으며 정상 작동했습니다.
이번 스크립트에는 logrotate 설정 내용이 추가되어 있습니다.
네임기반 가상 호스트 설정에서 기존에는 ip 주소를 넣어야 했지만 도메인을 넣어도 정상 작동합니다.
#!/bin/bash
# Usage : ./adduser id password e-mail
# 2002/11/3 최초 작성
# 2002/11/4 제로보드 설치지원 추가,
# 메일보내기 지원, 안내페이지 변경, 사용자 체크
# 2002/12/5 logrotate 설정 추가
dateis=$(date +%Y/%m/%d)
timeis=$(date | awk '{print $4}')
# ./adduser.sh 실행시 변수가 있는지 체크
if [ $# = 0 ]
then
echo "Usage: ./adduser.sh id pass e-mail"
exit 1
fi
# 사용자 계정 생성
# public_html 은 /etc/skel/ 에 위치해서 계정생성시 자동으로 생성
# public_html 퍼미션은 /etc/skel 생성 후 퍼미션 지정 해주면 지정해준 퍼미션으로 생성됨
# user 추가시 해당 유저 디렉토리 퍼미션은 /etc/login.defs 에 UMASK 076 을 추가해 퍼미션이701 로 생성됨
if useradd -g hosting $1
then
echo $2 | /usr/bin/passwd --stdin $1
# 제로보드 설치 지원
echo -n "Zeroboard Install? - [Y/N](default N) : "
read zero
if [ "$zero" = "y" ] || [ "$zero" = "Y" ]; then
cp -R /home/chicpro/bbs/ /home/$1/public_html/
chown -R $1.hosting /home/$1/public_html/bbs
chmod 707 /home/$1/public_html/bbs
chmod 707 /home/$1/public_html/bbs/data
chmod 707 /home/$1/public_html/bbs/icon
fi
# weblogs 디렉토리 생성
mkdir /home/$1/public_html/weblogs
# Mysql 에 새로운 DB 를 추가합니다.
echo -n "MYSQL DB Create? - [y/n](default n) : "
read db
if [ "$db" = "y" ] || [ "$db" = "Y" ]; then
echo -n "MYSQL root password: "
read pass
touch /tmp/mysql_dbusersetup_temp
echo "create database $1;" >> /tmp/mysql_dbusersetup_temp
echo "insert into db values('localhost','$1'+ ','$1','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');" >> /tmp/mysql_dbusersetup_temp
echo "insert into user values('localhost','$1',password('$2'),'N','N','N','N','N','N','N','N','N','N','N','N','N','N');" >> /tmp/mysql_dbusersetup_temp
/usr/bin/mysql -u root -p$pass mysql < /tmp/mysql_dbusersetup_temp
rm -f /tmp/mysql_dbusersetup_temp
/usr/bin/mysqladmin -u root -p$pass reload
fi
# quota 설정
# edquota -u $1
# 아파치 vhost.conf 파일에 가상호스트 부분을 추가함
echo " " >> /etc/httpd/conf/vhost.conf
echo "<VirtualHost www.cable.websamo.net>" >> /etc/httpd/conf/vhost.conf
echo " ServerAdmin $3" >> /etc/httpd/conf/vhost.conf
echo " DocumentRoot /home/$1/public_html" >> /etc/httpd/conf/vhost.conf
echo " ServerName $1.cable.websamo.net" >> /etc/httpd/conf/vhost.conf
echo " ThrottlePolicy Volume 100M 1d" >> /etc/httpd/conf/vhost.conf #<-- mod_throttle 없다면 라인삭제
echo " ErrorLog logs/$1-error_log" >> /etc/httpd/conf/vhost.conf
echo " CustomLog logs/$1-access_log combined env=!nosave" >> /etc/httpd/conf/vhost.conf
echo "</VirtualHost>" >> /etc/httpd/conf/vhost.conf
# 사용자별 Webalizer 설정
echo "LogFile /var/log/httpd/$1-access_log" >> /etc/webalizer/$1-webalizer.conf
echo "LogType clf" >> /etc/webalizer/$1-webalizer.conf
echo "OutputDir /home/$1/public_html/weblogs" >> /etc/webalizer/$1-webalizer.conf
echo "HistoryName webalizer.hist" >> /etc/webalizer/$1-webalizer.conf
echo "Incremental yes" >> /etc/webalizer/$1-webalizer.conf
echo "IncrementalName webalizer.current" >> /etc/webalizer/$1-webalizer.conf
echo "HostName $1.websamo.net" >> /etc/webalizer/$1-webalizer.conf
echo "PageType htm*" >> /etc/webalizer/$1-webalizer.conf
echo "PageType cgi" >> /etc/webalizer/$1-webalizer.conf
echo "PageType php" >> /etc/webalizer/$1-webalizer.conf
echo "PageType php3" >> /etc/webalizer/$1-webalizer.conf
echo "/usr/local/bin/webalizer -c /etc/webalizer/$1-webalizer.conf" >> /root/cron/webalizer.cron
# logrotate 설정 추가 (로그 파일의 크기가 너무 커지지 않게 유지)
echo " " >> /etc/logrotate.d/apache
echo "/var/log/httpd/$1-access_log {" >> /etc/logrotate.d/apache
echo " missingok" >> /etc/logrotate.d/apache
echo " postrotate" >> /etc/logrotate.d/apache
echo " /usr/bin/killall -HUP httpd" >> /etc/logrotate.d/apache
echo " endscript" >> /etc/logrotate.d/apache
echo "}" >> /etc/logrotate.d/apache
echo " " >> /etc/logrotate.d/apache
echo "/var/log/httpd/$1-error_log {" >> /etc/logrotate.d/apache
echo " missingok" >> /etc/logrotate.d/apache
echo " postrotate" >> /etc/logrotate.d/apache
echo " /usr/bin/killall -HUP httpd" >> /etc/logrotate.d/apache
echo " endscript" >> /etc/logrotate.d/apache
echo "}" >> /etc/logrotate.d/apache
# 계정별 사용량 체크 추가
echo "/usr/bin/du -sh /home/$1 >> /home/chicpro/usage.txt" >> /root/cron/usage.cron
# 안내페이지 생성
# 안내페이지의 일부분 내용은 /etc/skel/public_html/index.html 에 포함되어 있음
# 아래 내용이 첨부되어 완전한 페이지 완성
echo " <td><p><b>웹사모의 가족이 되신 것을 진심으로 축하드립니다!!<br>" >> /home/$1/public_html/index.html
echo " 현재</b>($dateis $timeis)<b> $1 님의 계정이 발급되었습니다.<br>" >> /home/$1/public_html/index.html
echo " 아래 내용은 신청하신 정보입니다.</b><br><br>" >> /home/$1/public_html/index.html
echo " ID : $1 / 신청하신 Password / E-mail : $3<br>" >> /home/$1/public_html/index.html
echo " 웹주소 : http://$1.websamo.net<br>" >> /home/$1/public_html/index.html
echo " FTP : ftp.websamo.net 포트 9585 / SSH : ssh.websamo.net 포트 22<br>" >> /home/$1/public_html/index.html
if [ "$zero" = "y" ] || [ "$zero" = "Y" ]; then
echo " 제로보드 설치지원 : <a href=http://$1.cable.websamo.net:9000/bbs/install.php target=_blank>제로보드설치</a><br><br>" >> /home/$1/public_html/index.html
else
echo " <br>" >> /home/$1/public_html/index.html
fi
echo " <b>기타 문의 사항은 </b><a href=http://websamo.net><b>http://websamo.net</b></a><b> 을 방문해 주시기 바랍니다</b></p>" >> /home/$1/public_html/index.html
echo " </td>" >> /home/$1/public_html/index.html
echo " </tr>" >> /home/$1/public_html/index.html
echo " </table>" >> /home/$1/public_html/index.html
echo " </td>" >> /home/$1/public_html/index.html
echo " <td bgcolor=#76CBED width=1></td>" >> /home/$1/public_html/index.html
echo " </tr>" >> /home/$1/public_html/index.html
echo " <tr>" >> /home/$1/public_html/index.html
echo " <td colspan=3><img src=title_error02.gif width=586 height=9 border=0></td>" >> /home/$1/public_html/index.html
echo " </tr>" >> /home/$1/public_html/index.html
echo " </table>" >> /home/$1/public_html/index.html
echo " </td>" >> /home/$1/public_html/index.html
echo " </tr>" >> /home/$1/public_html/index.html
echo "</table>" >> /home/$1/public_html/index.html
echo " </td>" >> /home/$1/public_html/index.html
echo " </tr>" >> /home/$1/public_html/index.html
echo "</table>" >> /home/$1/public_html/index.html
echo " </body>" >> /home/$1/public_html/index.html
echo "</html>" >> /home/$1/public_html/index.html
# 계정 발급 완료 메일 보내기 (sendmail 이용)
title="계정 발급 안내 입니다." # 메일 제목
echo " 계정 발급 및 세팅이 완료되었습니다." > /tmp/contents # 보낼 메일 내용
echo " ==================================" >> /tmp/contents # 보낼 메일 내용
echo " 계정 세팅이 완료 되었습니다. ($dateis $timeis)" >> /tmp/contents
echo " 아래는 신청하신 정보입니다." >> /tmp/contents
echo " 일치하지 않으면 메일 (chicpro@korea.com) 주세요." >> /tmp/contents
echo " " >> /tmp/contents
echo " ID : $1" >> /tmp/contents
echo " PASS : $2" >> /tmp/contents
echo " e-mail : $3" >> /tmp/contents
echo " " >> /tmp/contents
echo " WEB주소 : http://$1.websamo.net" >> /tmp/contents
echo " FTP주소 : ftp.websamo.net 포트 9585" >> /tmp/contents
echo " SSH주소 : ssh.websamo.net 포트 22" >> /tmp/contents
echo " " >> /tmp/contents
echo " 웹주소로 접속하면 안내페이지를 보실 수 있습니다." >> /tmp/contents
echo " " >> /tmp/contents
echo " 기타 궁금하신 점은 http://websamo.net 을 방문해주세요." >> /tmp/contents
cat /tmp/contents >> /tmp/data.txt
rm -f /tmp/contents
mail -s "$title" $3 < /tmp/data.txt
rm -f /tmp/data.txt
# 아파치 서버 재 구동
/etc/init.d/httpd restart
exit 0
else
echo " User $1 already exist!!"
exit 1
fi
레드햇 7.3 에서 작동확인 했으며 정상 작동했습니다.
이번 스크립트에는 logrotate 설정 내용이 추가되어 있습니다.
네임기반 가상 호스트 설정에서 기존에는 ip 주소를 넣어야 했지만 도메인을 넣어도 정상 작동합니다.
#!/bin/bash
# Usage : ./adduser id password e-mail
# 2002/11/3 최초 작성
# 2002/11/4 제로보드 설치지원 추가,
# 메일보내기 지원, 안내페이지 변경, 사용자 체크
# 2002/12/5 logrotate 설정 추가
dateis=$(date +%Y/%m/%d)
timeis=$(date | awk '{print $4}')
# ./adduser.sh 실행시 변수가 있는지 체크
if [ $# = 0 ]
then
echo "Usage: ./adduser.sh id pass e-mail"
exit 1
fi
# 사용자 계정 생성
# public_html 은 /etc/skel/ 에 위치해서 계정생성시 자동으로 생성
# public_html 퍼미션은 /etc/skel 생성 후 퍼미션 지정 해주면 지정해준 퍼미션으로 생성됨
# user 추가시 해당 유저 디렉토리 퍼미션은 /etc/login.defs 에 UMASK 076 을 추가해 퍼미션이701 로 생성됨
if useradd -g hosting $1
then
echo $2 | /usr/bin/passwd --stdin $1
# 제로보드 설치 지원
echo -n "Zeroboard Install? - [Y/N](default N) : "
read zero
if [ "$zero" = "y" ] || [ "$zero" = "Y" ]; then
cp -R /home/chicpro/bbs/ /home/$1/public_html/
chown -R $1.hosting /home/$1/public_html/bbs
chmod 707 /home/$1/public_html/bbs
chmod 707 /home/$1/public_html/bbs/data
chmod 707 /home/$1/public_html/bbs/icon
fi
# weblogs 디렉토리 생성
mkdir /home/$1/public_html/weblogs
# Mysql 에 새로운 DB 를 추가합니다.
echo -n "MYSQL DB Create? - [y/n](default n) : "
read db
if [ "$db" = "y" ] || [ "$db" = "Y" ]; then
echo -n "MYSQL root password: "
read pass
touch /tmp/mysql_dbusersetup_temp
echo "create database $1;" >> /tmp/mysql_dbusersetup_temp
echo "insert into db values('localhost','$1'+ ','$1','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');" >> /tmp/mysql_dbusersetup_temp
echo "insert into user values('localhost','$1',password('$2'),'N','N','N','N','N','N','N','N','N','N','N','N','N','N');" >> /tmp/mysql_dbusersetup_temp
/usr/bin/mysql -u root -p$pass mysql < /tmp/mysql_dbusersetup_temp
rm -f /tmp/mysql_dbusersetup_temp
/usr/bin/mysqladmin -u root -p$pass reload
fi
# quota 설정
# edquota -u $1
# 아파치 vhost.conf 파일에 가상호스트 부분을 추가함
echo " " >> /etc/httpd/conf/vhost.conf
echo "<VirtualHost www.cable.websamo.net>" >> /etc/httpd/conf/vhost.conf
echo " ServerAdmin $3" >> /etc/httpd/conf/vhost.conf
echo " DocumentRoot /home/$1/public_html" >> /etc/httpd/conf/vhost.conf
echo " ServerName $1.cable.websamo.net" >> /etc/httpd/conf/vhost.conf
echo " ThrottlePolicy Volume 100M 1d" >> /etc/httpd/conf/vhost.conf #<-- mod_throttle 없다면 라인삭제
echo " ErrorLog logs/$1-error_log" >> /etc/httpd/conf/vhost.conf
echo " CustomLog logs/$1-access_log combined env=!nosave" >> /etc/httpd/conf/vhost.conf
echo "</VirtualHost>" >> /etc/httpd/conf/vhost.conf
# 사용자별 Webalizer 설정
echo "LogFile /var/log/httpd/$1-access_log" >> /etc/webalizer/$1-webalizer.conf
echo "LogType clf" >> /etc/webalizer/$1-webalizer.conf
echo "OutputDir /home/$1/public_html/weblogs" >> /etc/webalizer/$1-webalizer.conf
echo "HistoryName webalizer.hist" >> /etc/webalizer/$1-webalizer.conf
echo "Incremental yes" >> /etc/webalizer/$1-webalizer.conf
echo "IncrementalName webalizer.current" >> /etc/webalizer/$1-webalizer.conf
echo "HostName $1.websamo.net" >> /etc/webalizer/$1-webalizer.conf
echo "PageType htm*" >> /etc/webalizer/$1-webalizer.conf
echo "PageType cgi" >> /etc/webalizer/$1-webalizer.conf
echo "PageType php" >> /etc/webalizer/$1-webalizer.conf
echo "PageType php3" >> /etc/webalizer/$1-webalizer.conf
echo "/usr/local/bin/webalizer -c /etc/webalizer/$1-webalizer.conf" >> /root/cron/webalizer.cron
# logrotate 설정 추가 (로그 파일의 크기가 너무 커지지 않게 유지)
echo " " >> /etc/logrotate.d/apache
echo "/var/log/httpd/$1-access_log {" >> /etc/logrotate.d/apache
echo " missingok" >> /etc/logrotate.d/apache
echo " postrotate" >> /etc/logrotate.d/apache
echo " /usr/bin/killall -HUP httpd" >> /etc/logrotate.d/apache
echo " endscript" >> /etc/logrotate.d/apache
echo "}" >> /etc/logrotate.d/apache
echo " " >> /etc/logrotate.d/apache
echo "/var/log/httpd/$1-error_log {" >> /etc/logrotate.d/apache
echo " missingok" >> /etc/logrotate.d/apache
echo " postrotate" >> /etc/logrotate.d/apache
echo " /usr/bin/killall -HUP httpd" >> /etc/logrotate.d/apache
echo " endscript" >> /etc/logrotate.d/apache
echo "}" >> /etc/logrotate.d/apache
# 계정별 사용량 체크 추가
echo "/usr/bin/du -sh /home/$1 >> /home/chicpro/usage.txt" >> /root/cron/usage.cron
# 안내페이지 생성
# 안내페이지의 일부분 내용은 /etc/skel/public_html/index.html 에 포함되어 있음
# 아래 내용이 첨부되어 완전한 페이지 완성
echo " <td><p><b>웹사모의 가족이 되신 것을 진심으로 축하드립니다!!<br>" >> /home/$1/public_html/index.html
echo " 현재</b>($dateis $timeis)<b> $1 님의 계정이 발급되었습니다.<br>" >> /home/$1/public_html/index.html
echo " 아래 내용은 신청하신 정보입니다.</b><br><br>" >> /home/$1/public_html/index.html
echo " ID : $1 / 신청하신 Password / E-mail : $3<br>" >> /home/$1/public_html/index.html
echo " 웹주소 : http://$1.websamo.net<br>" >> /home/$1/public_html/index.html
echo " FTP : ftp.websamo.net 포트 9585 / SSH : ssh.websamo.net 포트 22<br>" >> /home/$1/public_html/index.html
if [ "$zero" = "y" ] || [ "$zero" = "Y" ]; then
echo " 제로보드 설치지원 : <a href=http://$1.cable.websamo.net:9000/bbs/install.php target=_blank>제로보드설치</a><br><br>" >> /home/$1/public_html/index.html
else
echo " <br>" >> /home/$1/public_html/index.html
fi
echo " <b>기타 문의 사항은 </b><a href=http://websamo.net><b>http://websamo.net</b></a><b> 을 방문해 주시기 바랍니다</b></p>" >> /home/$1/public_html/index.html
echo " </td>" >> /home/$1/public_html/index.html
echo " </tr>" >> /home/$1/public_html/index.html
echo " </table>" >> /home/$1/public_html/index.html
echo " </td>" >> /home/$1/public_html/index.html
echo " <td bgcolor=#76CBED width=1></td>" >> /home/$1/public_html/index.html
echo " </tr>" >> /home/$1/public_html/index.html
echo " <tr>" >> /home/$1/public_html/index.html
echo " <td colspan=3><img src=title_error02.gif width=586 height=9 border=0></td>" >> /home/$1/public_html/index.html
echo " </tr>" >> /home/$1/public_html/index.html
echo " </table>" >> /home/$1/public_html/index.html
echo " </td>" >> /home/$1/public_html/index.html
echo " </tr>" >> /home/$1/public_html/index.html
echo "</table>" >> /home/$1/public_html/index.html
echo " </td>" >> /home/$1/public_html/index.html
echo " </tr>" >> /home/$1/public_html/index.html
echo "</table>" >> /home/$1/public_html/index.html
echo " </body>" >> /home/$1/public_html/index.html
echo "</html>" >> /home/$1/public_html/index.html
# 계정 발급 완료 메일 보내기 (sendmail 이용)
title="계정 발급 안내 입니다." # 메일 제목
echo " 계정 발급 및 세팅이 완료되었습니다." > /tmp/contents # 보낼 메일 내용
echo " ==================================" >> /tmp/contents # 보낼 메일 내용
echo " 계정 세팅이 완료 되었습니다. ($dateis $timeis)" >> /tmp/contents
echo " 아래는 신청하신 정보입니다." >> /tmp/contents
echo " 일치하지 않으면 메일 (chicpro@korea.com) 주세요." >> /tmp/contents
echo " " >> /tmp/contents
echo " ID : $1" >> /tmp/contents
echo " PASS : $2" >> /tmp/contents
echo " e-mail : $3" >> /tmp/contents
echo " " >> /tmp/contents
echo " WEB주소 : http://$1.websamo.net" >> /tmp/contents
echo " FTP주소 : ftp.websamo.net 포트 9585" >> /tmp/contents
echo " SSH주소 : ssh.websamo.net 포트 22" >> /tmp/contents
echo " " >> /tmp/contents
echo " 웹주소로 접속하면 안내페이지를 보실 수 있습니다." >> /tmp/contents
echo " " >> /tmp/contents
echo " 기타 궁금하신 점은 http://websamo.net 을 방문해주세요." >> /tmp/contents
cat /tmp/contents >> /tmp/data.txt
rm -f /tmp/contents
mail -s "$title" $3 < /tmp/data.txt
rm -f /tmp/data.txt
# 아파치 서버 재 구동
/etc/init.d/httpd restart
exit 0
else
echo " User $1 already exist!!"
exit 1
fi
댓글 8
-
®웃^음^이®
2002.12.05 19:24
-
티에스
2002.12.05 20:01
음 좋군요..추천꾹...
근데 이것 어찌 실행시켜여..
리눅스에서..
그것좀 갈켜주세염^^ -
편리
2002.12.06 01:04
위 스크립트의 내용을 복사해서 adduser.sh (파일이름은 재량껏) 로 저장하신 후
계정에 업로드 합니다. 그런 다음에 telnet 이나 ssh 로 접속하셔서 adduser.sh 에
실행권한을 줍니다. chmod +x adduser.sh 로 실행권한을 주시면 됩니다. 다음에
./adduser.sh id pass e-mail 이렇게 차례로 입력하시면 실행이 됩니다.
root 권한으로 하셔야 하는 건 아시죠? 실행권한이 있는되도 실행이 되지 않는다면
업로드시 ASCII 모드로 올리셨는지 확인해보세요. -
김동현
2002.12.07 15:17
윈도우용 세팅이라..
윈도우는 비교적 쉽지 않나요?
c나 베이직으로 짜야된다는 부담감도 있지요.. -
작은또치
2002.12.09 20:15
웹에서 세팅 방법이 없을까요. -
멈추어다오
2002.12.11 16:47
: bad interpreter: No such file or directory
이런 에러가 나용~ /bin/bash부분을 지우면 아래에서 신택스에러가 나고요!! 콘솔창에서 /bin/bash 쳐보면 파일이 있는거 같은데 흠흠.. 왜그럴까요? -
바람이꽃에게
2002.12.11 17:06
멈추어다오 // vi 편집기로 실행 -> 명령 입력창으로 set ff=unix 입력!! -> 저장하고 나옴 -> 실행 -> 오케바리될것입니다!! (이상 파일타입을 UNIX타입으로 바꾸어주는 명령이었습니다) -
장태식
2003.01.24 16:00
오옷!! -_-!! 정말 멋진 팁!! 감사감사~ ^ㅡ^
그럴만도하지 만들기 얼마나 짜증나는데 ㅜ_ㅜ ;;