질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

쉘스크립트에 관한 완전 초보 질문이에요.

작성자 정보

  • 완전초보 작성
  • 작성일

컨텐츠 정보

본문

정말 초보적이고 기초적인건데 이런 질문 드려서 죄송하구요.
쉘스크립트에 관한 내용들이 굉장히 많은데요.
서버 어느곳에 스크립트를 넣어서 이런 파일을 어떻게 만들어서 실행을 시키는지를 모르겠어요.
정말 짧은 질문이지만 상세한 답변좀 부탁드려요.
완전 초보에요.

관련자료

댓글 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

리온님의 댓글

  • 리온
  • 작성일
쉘 스크립트는 윈도우즈로 따지면 .bat 과 같은 기능을 하는 파일입니다.
그 파일의 위치가 어디건 상관없습니다.

문제 그 파일에 중요한 내용이 포함되어있을 경우 권한문제에 신경쓰는것이
중요할 뿐입니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,287 명
  • 현재 강좌수 :  36,942 개
  • 현재 접속자 :  392 명