들여쓰기가 제대로 표현 되도록 pre 태그를 사용해서 정리 했습니다.또한 약간의 주석을
곁들여 봅니다.<PRE>--counter.cgi--- #!/bin/sh# CGI 프로그래밍의 기본입니다. 파일 형식에 대한
헤더 출력입니다.# 이 부분이 제대로 되어 있지 않으면 보통 500? 서버 에러를 내게 됩니다.#
echo 외에도 printf(bash 내장 명령어)를 사용할 수 있습니다.## printf "Content-Type: text/html"#echo Con
tent-Type: text/htmlecho# datafile이라는 파일이 있는지 체크합니다. if [ ... ]에 대해서는# man test
하시면 많은 것을 알 수 있습니다.#if [ -f datafile ]; then# counter라는 변수에 datafile의 내용을
집어 넣는# 것입니다. 요즘은 `를 사용하기 보다는 $(command)를 사용합니다.# counter=`cat dataf
ile`else# datafile이 없다면 counter 환경 변수의 값을 0으로 집어 넣습니다.# counter=0fiif [ -f ipad
dfile ]; then ip_add=`cat ipaddfile`else ip_add=0fi# ip_add 변수의 값이 REMOTE_ADDR 변수(아파치 웹
서버에서 보내주는# 변수입니다. 이 변수에는 접속한 클라이언트쪽의 IP가 기록됩니다.)#
값과 일치 하지 않는다면 counter 변수값에 1을 더해서 datafile에# 기록을 합니다. 또한 REMOTE_AD
DR 변수값을 ipaddfile에 기록합니다.#if [ $ip_add != $REMOTE_ADDR ]; then counter=$(($counter+1)) ech
o $counter > datafile echo $REMOTE_ADDR > ipaddfilefi# 이 부분은 보시면 아시겠지만 카운트 출력 부
분입니다.#echo "<table border=0><td bgcolor=red align=center><table width=96% height=90% border=0><td bgcolor=yellow
>${counter}번째 방문</td></table></td></table>"</PRE>간단하면서도 할건 다 하는 카운터 CGI라고 생각
됩니다. :)바로 이전에 접속된 IP가 또 다시 리로드하게 되면 카운터가 올라가지않도록 아
주 간단히 처리해 두신 것에 대해서 존경을 표합니다. ^^(저는 카운터를 짜면서 왜 저런 생
각을 못했을까요? 멍청해서 그런듯)datafile과 ipaddfile의 소유자는 nobody, 퍼미션은 600 정도로
주면무리 없이 작동할 것이라 생각됩니다.