네트워크_09 셸 스크립트로 CGI 실행하기

 
  • 출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어

명령어: echo, uptime
키워드: cgi
사용처: 셸 스크립트로 CGI 프로그램을 작성하고 싶을 때

실행 예제

파일을 /cgi-bin/test.cgi에 설치해서 웹 브라우저로 접속
Test CGI: uptime
13:59 up 1 day, 15:31, 2 users, load averages: 3.01 1.87 1.68

스크립트

#!/bin/sh

# CGI 헤더 출력
echo "Content-Type: text/plain" # --- 1
echo

# 명령어를 실행해서 브라우저에 표시
echo "Test CGI: uptime" # ----------- 2
uptime

   

해설

이 스크립트는 CGI 프로그램으로 셸 스크립트를 실행합니다. 웹 브라우저로 접속하면 uptime 명령어 출력 결과를 표시해서 서버 로드 평균치 등을 확인할 수 있습니다.

CGI 프로그램을 작성할 때 프로그래밍 언어로 보통 펄이나 루비를 자주 사용합니다 .따라서 셸 스크립트로 CGI 프로그램을 작성하는 것이 이상해 보일 수도 있지만 CGI 프로그램을 꼭 펄로 작성해야 하는 것은 아니고 웹 브라우저가 해석 가능하도록 적절히 출력할 수만 있으면 언어는 뭐라도 상관없습니다.

예제처럼 명령어 출력 결과를 웹 브라우저에서 표시하고 싶을 때는 셸 스크립트가 편리합니다.

1에서 CGI 헤더를 출력합니다. 명령어 출력 결과를 그대로 브라우저에서 표시하므로 text/plain으로 출력합니다. 또한 HTTP 헤더 부분과 본문 부분을 빈 줄로 나눠야 하므로 빈 echo 명령어를 써서 줄바꿈을 출력합니다. CGI 헤더에 대한 자세한 내용은 이 책에서 다루는 범위 밖이므로 다른 책을 참조하기 바랍니다.

2에서 HTTP 응답의 본문부분 즉, 웹 브라우저에 표시하는 부분을 출력합니다. “Test CGI: uptime”이라는 문자열을 echo 명령어로 표시한 다음 uptime 명령어를 실행합니다. uptime 명령어는 서버 기동 시간과 과거 1분/5분/15분 로드 평균값을 표시하는 명령어입니다.

  • uptime 명령어로 기동 시간과 로드 평균값 표시
    $ uptime
    23:34 up 2 days, 3:41, 2 users, load averages: 2.23 2.21 .198
    

이렇게 CGI로 셸 스크립트를 사용하면 웹 브라우저에서 실행 결과를 확인할 수 있습니다. 그 외의 셸 스크립트로 CGI를 사용하는 예로는 서버 구축 활인용이 있습니다. 최소 구성으로 FreeBSD나 CentOS를 설치하면 펄이 설치되지 않습니다. 서버 구축 작업과 프로그램 개발을 동시 진행하는 프로젝트에서 임시로 웹 서버를 실행해서 클라이언트에서 CGI에 접속 가능한지 확인하는 경우가 있습니다. 이때 셸 스크립트로 작성한 CGI 프로그램을 설치해서 클라이언트에서 접속을 미리 확인핼 볼 수 있습니다.

   

주의사항

  • 서버에 부하가 걸리는 명령어를 실행하는 CGI 프로그램을 외부에서 접근 가능하도록 공개하면 대량 접속을 받아서 서버에 악영향을 줄 가능성이 있습니다. 따라서 이런 CGI 프로그램에는 인트라넷에서만 접속 가능하게 하거나 암호를 입력하게 하는 등 접근 제한을 두는 것이 좋습니다.

  • CGI 실행을 허용하기 위해서는 Apache의 설정을 수정해야 할 수 있습니다. 하기 링크를 참고 하세요. 아파치 CGI 설정방법