티스토리 뷰
DNSEVER의 DDNS는 wget 명령어를 통해서 이뤄진다.
crontab으로 반복적으로 실행될 쉘 스크립트를 만든다.
위치는 상관없다.
/opt/home/admin/ddns.sh도 괜찮고
/etc/storage/ddns.sh도 괜찮다.
명령어는
#!/bin/sh
wget --quiet --output-document=/opt/home/admin/ddns.txt --http-passwd=인증키 'http://dyna.dnsever.com/update.?host[도메인]'
로 하면 된다. 위는 기본 명령어고 아래는 /opt/home/admin/ddns.txt에 로그를 보겠다는 것이다. 사실 이 단계에서 로그는 크게 의미가 없긴 하다. 걍 ddns.sh를 실행해 보면 아이피가 업데이트 되는지 아닌지로 문제를 알 수 있으니까...
그 다음, 이걸 crontab에 등록한다. 여기에 따르면, 공유기가 시작되서 처음 로딩하는 명령어를 담고 있는 스크립트 /etc/storage/started_script.sh 를 열어서 아래와 같이 추가하면 된다.
################# user crontabs create ###################
# if app not exist
if [ ! -f /usr/sbin/crond ]; then
exit 0
fi
if [ -n "`pidof crond`" ] ; then
# stop daemon
killall -q crond
fi
# create /var/spool/cron/crontabs directory
if [ ! -d /var/spool/cron/crontabs ]; then
mkdir -p /var/spool/cron
cd /var/spool/cron
mkdir -p /var/spool/cron/crontabs
fi
Login=`nvram get http_username`
touch /var/spool/cron/crontabs/$Login
echo "SHELL=/bin/sh" > /var/spool/cron/crontabs/$Login
echo "MAILTO=""" >> /var/spool/cron/crontabs/$Login
echo "HOME=/" >> /var/spool/cron/crontabs/$Login
echo "(자신의 시간 설정) * * * * * /etc/storage/ddns.sh" >> /var/spool/cron/crontabs/$Login
/usr/sbin/crond -l 0 -L /var/log/cron.log
##########################################################
그냥 이렇게 하면 절대로 자동 실행이 안되는데 꽤 오랫동안 고생하다가 /var/log/cron.log를 분석해서 알아냈다. 원인은 built-in wget (/usr/bin/wget)와 optware를 이용해서 설치한 wget (/opt/bin/wget)가 다르다는 것에 있다. 처음에 공유기가 부팅되었을 때는 환경 변수가 로딩이 안되서인지 뭔지 몰라도 무조건 built-in wget를 통해서 ddns.sh 명령어를 수행한다. 그런데 --http 옵션이 built-in wget에는 없다. 아마 가장 기본적인 wget인가보다. 그러므로 USB 포트에 메모리를 넣고 optware를 깐 다음에 추가로 설치한 wget를 사용해야 정상적으로 ddns.sh가 실행이 된다.
그러니까 맨 처음의 박스에 있는 명령어는 wget가 /opt/bin/wget로 고쳐야 정상적으로 ddns.sh가 실행되고 crontab과 cron 데몬도 문제없이 실행된다.
참고로 optware나 entware의 wget가 아닌 기본 busybox의 바이너리로 동작하게 하고 싶다면 다음과 같이 스크립트를 쓰면 된다.
wget --quiet --output-document=/etc/storage/ddns.log "http://유저명:인증키@dyna.dnsever.com/update.php?host[도메인]"
실행 권한과 저장은 아래와 같이 하면 된다.
chomod 755 /etc/storage/ddns.sh
mtd_storage.sh save
아래는 참고할 내용들!
vi 명령어
dd 한줄 지우기
yy로 한줄 복사 후 P로 붙여넣기
#은 당연히 주석
:wq 저장하고 끝내기
:q! 저장하지 않고 끝내기
ESC 편집모드에서 명령 모드로
i 편집모드로
chmod
777은 rwxrwxrwx
755는 rwxr-xr-x
644는 rw-r--r--
끝!
'생활 속 > 홈서버' 카테고리의 다른 글
시놀로지 사설 패키지 및 서버 (25) | 2013.10.21 |
---|---|
RT-N56U에 nginx 올리기 (0) | 2013.05.26 |
Synology dongle list (14) | 2012.07.03 |
Synology Photo Station을 별도의 도메인으로 운영하기 (0) | 2011.10.09 |
APM 기반의 홈페이지를 윈도우 기반에서 리눅스 기반으로 이전(이사)할 때 참고할 점 (1) | 2011.04.15 |