리눅스 분류
쉘스크립트에 관한 완전 초보 질문이에요.
작성자 정보
- 완전초보 작성
- 작성일
컨텐츠 정보
- 2,177 조회
- 2 댓글
- 0 추천
- 목록
본문
정말 초보적이고 기초적인건데 이런 질문 드려서 죄송하구요.
쉘스크립트에 관한 내용들이 굉장히 많은데요.
서버 어느곳에 스크립트를 넣어서 이런 파일을 어떻게 만들어서 실행을 시키는지를 모르겠어요.
정말 짧은 질문이지만 상세한 답변좀 부탁드려요.
완전 초보에요.
쉘스크립트에 관한 내용들이 굉장히 많은데요.
서버 어느곳에 스크립트를 넣어서 이런 파일을 어떻게 만들어서 실행을 시키는지를 모르겠어요.
정말 짧은 질문이지만 상세한 답변좀 부탁드려요.
완전 초보에요.
관련자료
-
이전
-
다음
댓글 2
gurum님의 댓글
- gurum
- 작성일
이런 경우는 어떨까요...? 우선 쉘에 대한 개념은 잠시 피하고 실질적으로 어떻게 유용한지를 말씀드리면 좀더 접근하시 쉬우시겠네요....
ㅇ시나리오)
저 웹호스팅 회사에서 근무하는 초보 리눅서 입니다. 고객들이 도메인을 주면 그 도메인을 가지고 아파치 conf 파일을 설정해 주는 일을 주 업무로 하고 있습니다.
그런데 어느 날 문득 이런 생각이 들더군요... 이 반복된 작업을 좀 쉽게 할 수 있는 방법이 없을까 하고 생각이 들기 시작하였습니다..
물론 1개든 10개든 아파티 conf에 등록을 해주면 되지만 ..;;
그래서 쉘 스크립트 생각을 했습니다.
'아 스크립트로 좀 더 편하게 등록해줘 볼까?'
다음은 허접하게 만든 우분투 시스템에 각 팀들을 등록시켜주는 쉘 스크립트 입니다.
=======================================================
#!/bin/bash
if [ -e /etc/apache2/mods-enabled/authnz_ldap.load ]
then
echo " "
echo "ldap, ssl modules 이미 설정되어 있습니다."
echo " "
else
echo " "
echo "ldap, ssl modules 자동으로 설정합니다."
echo " "
/bin/ln -s /etc/apache2/mods-available/authnz_ldap.load /etc/apache2/mods-enabled/
/bin/ln -s /etc/apache2/mods-available/ldap.load /etc/apache2/mods-enabled/
/bin/ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/
/bin/ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/
echo "자동 설정을 완료하였습니다.###################################### "
fi
apache2_conf_add ()
{
#등록할 trac 팀 정보 입력부분
echo " "
echo "종료를 원하시면 CTRL+C를 눌러 주세요"
echo " "
echo -n "추가할 TEAM 명을 입력해 주세요 : "
read trac_team
#등록할 trac_team이 존재하는지 검사
if [ "$trac_team" = "`cat /etc/passwd | grep home | grep $trac_team | awk -F: '{ print $1 }'`" ]; then
# if [ "$trac_team" = "`cat /etc/passwd | grep home | grep $trac_team | awk -F: '{ print $1 }'`" ]; then
echo "${trac_team} 팀명이 존재합니다. 다른 팀명을 사용해 주세요."
apache2_conf_add
else
# echo -n "${trac_team}에 사용할 암호를 입력해주세요 : "
# read trac_pw
echo -n "${trac_team}에 사용할 도메인을 입력해주세요 ex) rnd3.infraware.net : "
read mdomain
#trac_team 추가부분
useradd $trac_team -c $mdomain
# echo $trac_pw | passwd $trac_team --stdin
echo "팀명에 대한 패스워드를 설정하겠습니다. : "
/usr/bin/passwd ${trac_team}
#VirtualHost 추가부분
echo "<VirtualHost *:443>
ServerAdmin lucifertear@gmail.com
ServerName ${trac_team}.infraware.net
DocumentRoot /var/www
LogLevel warn
CustomLog /var/log/apache2/${trac_team}_access.log combined
ErrorLog /var/log/apache2/${trac_team}_error.log
SSLEngine on
SSLCertificateFile /root/ssl/cert.pem
SSLCertificateKeyFile /root/ssl/key.pem
<Location /projects/${trac_team}>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonInterpreter main_interpreter
PythonOption TracEnv /home/trac/${trac_team}
PythonOption TracUriRoot /projects/${trac_team}
SetEnv PYTHON_EGG_CACHE /home/trac/${trac_team}/.egg-cache
# AuthType JOSSO
# AuthName "JOSSO TEST"
# GatewayLoginUrl "https://josso.infraware.net/josso/signon/login.do"
# GatewayLogoutUrl "https://josso.infraware.net/josso/signon/logout.do"
# GatewayEndpoint "josso.infraware.net" 8080
AuthType Basic
AuthName ""${trac_team} Trac""
AuthBasicProvider ldap
AuthzLDAPAuthoritative On
AuthLDAPURL "ldap://ldapinfra.infraware.net:389/ou=People,dc=ldap,dc=infraware,dc=net?uid"
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
Require ldap-group cn=fulltime,ou=fulltime,ou=infraGroup,ou=infraware,ou=Group,dc=ldap,dc=infraware,dc=net
</Location>
####### SVN CONF #######
<Location /svn/${trac_team}>
DAV svn
SVNPath /svn/${trac_team}
SVNPathAuthz off
AuthType Basic
AuthName ""${trac_team} Subversion Repository""
AuthBasicProvider ldap
AuthzLDAPAuthoritative On
AuthLDAPURL "ldap://ldapinfra.infraware.net:389/ou=People,dc=ldap,dc=infraware,dc=net?uid"
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
Require ldap-group cn=fulltime,ou=fulltime,ou=infraGroup,ou=infraware,ou=Group,dc=ldap,dc=infraware,dc=net
</Location>
####### MQ CONF #######
<Location /mq${trac_team}>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonInterpreter main_interpreter
PythonOption TracEnv /home/trac/${trac_team}
PythonOption TracUriRoot /projects/${trac_team}
SetEnv PYTHON_EGG_CACHE /home/trac/${trac_team}/.egg-cache
</Location>
####### JavaScrit API #######
<Location /${trac_team}>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonInterpreter main_interpreter
PythonOption TracEnv /home/trac/${trac_team}
PythonOption TracUriRoot /${trac_team}
SetEnv PYTHON_EGG_CACHE /home/trac/${trac_team}/.egg-cache
</Location>
</VirtualHost>" > /etc/apache2/sites-available/${mdomain}
a2ensite ${mdomain}
#정보 출력
echo "${trac_team} 팀명이 추가되었습니다."
echo "수동으로 apache2를 재 시작하여 주십시요.!!!!!!!!!!!!!!!!!!"
exit
fi
}
apache2_conf_add
ㅇ시나리오)
저 웹호스팅 회사에서 근무하는 초보 리눅서 입니다. 고객들이 도메인을 주면 그 도메인을 가지고 아파치 conf 파일을 설정해 주는 일을 주 업무로 하고 있습니다.
그런데 어느 날 문득 이런 생각이 들더군요... 이 반복된 작업을 좀 쉽게 할 수 있는 방법이 없을까 하고 생각이 들기 시작하였습니다..
물론 1개든 10개든 아파티 conf에 등록을 해주면 되지만 ..;;
그래서 쉘 스크립트 생각을 했습니다.
'아 스크립트로 좀 더 편하게 등록해줘 볼까?'
다음은 허접하게 만든 우분투 시스템에 각 팀들을 등록시켜주는 쉘 스크립트 입니다.
=======================================================
#!/bin/bash
if [ -e /etc/apache2/mods-enabled/authnz_ldap.load ]
then
echo " "
echo "ldap, ssl modules 이미 설정되어 있습니다."
echo " "
else
echo " "
echo "ldap, ssl modules 자동으로 설정합니다."
echo " "
/bin/ln -s /etc/apache2/mods-available/authnz_ldap.load /etc/apache2/mods-enabled/
/bin/ln -s /etc/apache2/mods-available/ldap.load /etc/apache2/mods-enabled/
/bin/ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/
/bin/ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/
echo "자동 설정을 완료하였습니다.###################################### "
fi
apache2_conf_add ()
{
#등록할 trac 팀 정보 입력부분
echo " "
echo "종료를 원하시면 CTRL+C를 눌러 주세요"
echo " "
echo -n "추가할 TEAM 명을 입력해 주세요 : "
read trac_team
#등록할 trac_team이 존재하는지 검사
if [ "$trac_team" = "`cat /etc/passwd | grep home | grep $trac_team | awk -F: '{ print $1 }'`" ]; then
# if [ "$trac_team" = "`cat /etc/passwd | grep home | grep $trac_team | awk -F: '{ print $1 }'`" ]; then
echo "${trac_team} 팀명이 존재합니다. 다른 팀명을 사용해 주세요."
apache2_conf_add
else
# echo -n "${trac_team}에 사용할 암호를 입력해주세요 : "
# read trac_pw
echo -n "${trac_team}에 사용할 도메인을 입력해주세요 ex) rnd3.infraware.net : "
read mdomain
#trac_team 추가부분
useradd $trac_team -c $mdomain
# echo $trac_pw | passwd $trac_team --stdin
echo "팀명에 대한 패스워드를 설정하겠습니다. : "
/usr/bin/passwd ${trac_team}
#VirtualHost 추가부분
echo "<VirtualHost *:443>
ServerAdmin lucifertear@gmail.com
ServerName ${trac_team}.infraware.net
DocumentRoot /var/www
LogLevel warn
CustomLog /var/log/apache2/${trac_team}_access.log combined
ErrorLog /var/log/apache2/${trac_team}_error.log
SSLEngine on
SSLCertificateFile /root/ssl/cert.pem
SSLCertificateKeyFile /root/ssl/key.pem
<Location /projects/${trac_team}>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonInterpreter main_interpreter
PythonOption TracEnv /home/trac/${trac_team}
PythonOption TracUriRoot /projects/${trac_team}
SetEnv PYTHON_EGG_CACHE /home/trac/${trac_team}/.egg-cache
# AuthType JOSSO
# AuthName "JOSSO TEST"
# GatewayLoginUrl "https://josso.infraware.net/josso/signon/login.do"
# GatewayLogoutUrl "https://josso.infraware.net/josso/signon/logout.do"
# GatewayEndpoint "josso.infraware.net" 8080
AuthType Basic
AuthName ""${trac_team} Trac""
AuthBasicProvider ldap
AuthzLDAPAuthoritative On
AuthLDAPURL "ldap://ldapinfra.infraware.net:389/ou=People,dc=ldap,dc=infraware,dc=net?uid"
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
Require ldap-group cn=fulltime,ou=fulltime,ou=infraGroup,ou=infraware,ou=Group,dc=ldap,dc=infraware,dc=net
</Location>
####### SVN CONF #######
<Location /svn/${trac_team}>
DAV svn
SVNPath /svn/${trac_team}
SVNPathAuthz off
AuthType Basic
AuthName ""${trac_team} Subversion Repository""
AuthBasicProvider ldap
AuthzLDAPAuthoritative On
AuthLDAPURL "ldap://ldapinfra.infraware.net:389/ou=People,dc=ldap,dc=infraware,dc=net?uid"
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
Require ldap-group cn=fulltime,ou=fulltime,ou=infraGroup,ou=infraware,ou=Group,dc=ldap,dc=infraware,dc=net
</Location>
####### MQ CONF #######
<Location /mq${trac_team}>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonInterpreter main_interpreter
PythonOption TracEnv /home/trac/${trac_team}
PythonOption TracUriRoot /projects/${trac_team}
SetEnv PYTHON_EGG_CACHE /home/trac/${trac_team}/.egg-cache
</Location>
####### JavaScrit API #######
<Location /${trac_team}>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonInterpreter main_interpreter
PythonOption TracEnv /home/trac/${trac_team}
PythonOption TracUriRoot /${trac_team}
SetEnv PYTHON_EGG_CACHE /home/trac/${trac_team}/.egg-cache
</Location>
</VirtualHost>" > /etc/apache2/sites-available/${mdomain}
a2ensite ${mdomain}
#정보 출력
echo "${trac_team} 팀명이 추가되었습니다."
echo "수동으로 apache2를 재 시작하여 주십시요.!!!!!!!!!!!!!!!!!!"
exit
fi
}
apache2_conf_add
리온님의 댓글
- 리온
- 작성일
쉘 스크립트는 윈도우즈로 따지면 .bat 과 같은 기능을 하는 파일입니다.
그 파일의 위치가 어디건 상관없습니다.
문제 그 파일에 중요한 내용이 포함되어있을 경우 권한문제에 신경쓰는것이
중요할 뿐입니다.
그 파일의 위치가 어디건 상관없습니다.
문제 그 파일에 중요한 내용이 포함되어있을 경우 권한문제에 신경쓰는것이
중요할 뿐입니다.