다음 이전 차례

6. 어떻게 접속 절차를 자동화하는가? (How do I automate the connection procedure?)

리눅스에서 뉴스와 전자우편을 자동으로 처리하는 것을 구현하는 것은 매우 쉽다.

먼저 무엇보다 ISP로의 연결을 초기화해 주는 /usr/lib/ppp/ppp-on을 만들어야 한다. 보통, 이 파일은 간단히 다음과 같은 것을 담고 있다:

/usr/sbin/pppd
더 자세한 설정은 /etc/ppp/options에서 수행된다:
connect "/usr/lib/ppp/chat -v -f /etc/ppp/chatscript"
crtscts
modem
defaultroute
asyncmap 00000000
user dirk
/dev/modem 38400

연결을 끝내기 위해서, /usr/lib/ppp/ppp-off가 들어있는 버전을 사용하면 된다.

이 두 스크립트의 기능을 시험하고 나면, 여러 작업을 수행하는 스크립트를 작성해야 한다. 이 스크립트는 앞에서 설명한 메일들을 가져오는 일을 한다, 그리고 이것이 /home/dirk/pop에 있다는 것을 가정한다.

메일을 주고받기 위한 스크립트는 /root/mail에 생성된다:

#! /bin/sh
#
# exchange mail
# 10 minutes timeout:
TIMEOUT=600
DT=10

# kick sendmail:
sendmail -q &

# retrieve mail:
su dirk -c /home/dirk/pop

# wait for sendmail to terminate:
t=0
while ! mailq | grep -q "Mail queue is empty"; do
    t=$[$t+$DT]
    if [ $t -gt $TIMEOUT ] ; then
     echo "sendmail -q timeout ($TIMEOUT).."
     exit 1
    fi
    sleep $DT
done

exit 0

뉴스를 주고받기 위한 스크립트는 /usr/lib/news/news에 위치한다:

#!/bin/sh
#
# exchange news
# must be run as news:
cd /usr/lib/news

#update the outgoing batch (C News):
/usr/lib/newsbin/input/newsrun < /dev/null

#exchange news:
/usr/lib/newsbin/newsx acme news.acme.net

#and flush the incoming batch:
/usr/lib/newsbin/input/newsrun < /dev/null
A script to connect the various bits and pieces remains, and can be placed in /root/news+mail:
#!/bin/sh
#
# exchange news and email
# must be run as root
#
if ! /usr/lib/ppp/ppp-on; then
    exit 1
fi
trap "/usr/lib/ppp/ppp-off" 1 2 3 15

#exchange news+mail:
/root/mail &
su news -c ~news/news
wait

#disconnect..
/usr/lib/ppp/ppp-off

#update the incoming batch (C News):
su news -c /usr/lib/newsbin/input/newsrun < /dev/null &

exit 0

외부로 나갈 메일이나 뉴스가 있는 경우 접속하도록 확장하는 것은 매우 쉽다. 이것을 /root/news+mail라 하자, 그리고 외부로 나갈 뉴스-스풀의 이름이 알맞게 갱신되어야 한다는 것을 새겨둔다:

#!/bin/sh
#
# exchange news and email, only if outgoing news or mail
# (C News spool)
if [ -s /var/spool/news/out.going/acme/togo ] ||
    ! ( mailq | grep -q "Mail queue is empty"); then
     /root/news+mail
fi

이제 남은 것은 언제 내보내야 할지 정하는 일 뿐이다. 이것은 root로 crontab -e 명령어로 수행된다. 우리는 항상 뉴스와 메일을 아침 07:00 에 주고받고, 외부로 나가는 메일과 뉴스를 매 네시간 마다 내보낸다고 가정하자.

00 7      * * *     /root/news+mail
00 11,15,19,23 * * *     /root/news+mail.cond
각각의 부분들을 같이 연결하기 전에 충분히 시험해볼 것을 권한다. 나중에 다른 일들을 첨가할 수도 있다. 예를 들어 시간을 맞춘다던가 (ntpdate 를 이용), 로컬로 운영되는 WWW의 자동적인 갱신(미러링), 그리고 FTP 파일을 ISP로 업하는 것(make와 ftp를 이용) 등이 있다.

대안: 취향에 따라서, 프로세스가 엉망이 될 수도 있다. PPP 링크가 초기화 될때마다, /etc/ppp/ip-up 스크립트가 시작된다. 여기에 전자우편과 뉴스를 주고받기 위해 필요한 어떠한 magic이든 추가시킬 수 있다. 자세한 사항은 man pppd를 참조하기 바란다.

대안: 네트웍 트래픽 요구가 감지되었을 때마다 자동으로 PPP 접속을 할 수도 있다. 여기에는 많은 정밀한 방법들이 있지만, 자주 접속이 이루어지는 것을 막기 위해서 좋은 설정에 크게 의존한다. 더 많은 정보는 여기서 구할 수 있다:

http://www.cs.toronto.edu/~schenk/diald.html

diald 유틸리티는 여기서 구할 수 있다:

ftp://sunsite.unc.edu/pub/Linux/system/Network/serial/diald-0.13.tar.gz

역시 그곳에서 다른 다양한 PPP 접속 방법을 발견하게 될 것이다.


다음 이전 차례