Script cập nhật IP động cho namecheap.com

Khi sử dụng dynamic DNS, namecheap cho phép cập nhật IP động cho

  1. @: domain chính, thí dụ domain.com
  2. subdomain: subA thay cho subA.domain.com
  3. *: thay cho tất cả subdomain, không tính @

Trong trường hợp * và một subdomain được cập nhật IP khác nhau thì sub domain được ưu tiên dùng IP của mình.

Mỗi tên miền dùng dynamic DNS có một mật khẩu để cập nhật IP do namecheap cấp, không phải mật khẩu đăng nhập. Trước khi dùng script, khai báo các tham số trong mảng DOMAIN của script. Nếu update IP gặp lỗi, script sẽ gởi email thông báo về REPORT_TO.

#!/bin/bash
# namecheap  
# Update dynamic IP for DNS record A on cloudflare
# © 2020 LNT <lnt@lyle.info>
# version 20200424
#
TMP='/tmp/namecheap.ip'
REPORT_TO='mailme@domain.com'
declare -a DOMAIN
# Giả sử muốn cập nhật cho domain1.com: @,subdomain1,subdomain2,*
DOMAIN=(
  'domain1.com:password1 @,subdomain1,subdomain2,*'
  'domain2.org:password2 @,*'
)
[ -f "$TMP" ] && oIP=$(<$TMP) || oIP=''
IP=$(curl -s http://icanhazip.com/)
printf $IP > $TMP
if [ "$IP" != "$oIP" ]; then
  msg=''
  for data in "${DOMAIN[@]}"; do
    oIFS=$IFS
    read -r user sub <<< $data
    IFS=: read -r dom pwd <<< $user
    IFS=, read -ra hosts <<< $sub
    IFS=$oIFS
    for host in "${hosts[@]}"; do
      ret=$(curl -s "http://dynamicdns.park-your-domain.com/update?host=$host&domain=$dom&password=$pwd" | grep -oP '(?<=<Done>)[^<]*')
      [ "$ret" = 'true' ] || msg="${msg}- Updating $host for $domain FAILED!\n"
    done
  done
fi
[ "$msg" ] && echo "$msg" | mail -s "Update Dynamic IP" $REPORT_TO

Comments Off on Script cập nhật IP động cho namecheap.com

Filed under Software

Comments are closed.