====== Dynamic DNS ====== ダイナミックDNSのIPアドレス通知スクリプト ===== cron設定 ===== 9,19,29,39,49,59 * * * * pi /usr/local/bin/update-mydns 1 * * * * pi /usr/local/bin/update-No-ip ===== MyDNS.JP ===== #!/bin/sh # Domain=domain1.jp MasterID=mydnsXXXXXX Password=xxxxxxxxxxx IfName=eth0 ipv4=0 ipv6=0 ip -o addr show | while read num ifname inet ipaddr other do test "$ifname" != "$IfName" && continue echo $other | grep "scope global" > /dev/null || continue echo $other | grep "mngtmpaddr" > /dev/null && continue case $inet in inet6) URL="https://ipv6.mydns.jp/directip.html?MID=${MasterID}&PWD=${Password}&IPV6ADDR=${ipaddr%/*}" if [ ${ipv6} -eq 0 ] then curl ${URL} -o /dev/null 1> /dev/null 2>&1 && ipv6=1 ans=`dig $Domain AAAA +short` logger -p user.info -t mydns "Status ifname=${ifname}, ${inet}=${ipaddr}, Ans=${ans}, Update=${ipv6}" fi ;; inet) URL="https://${MasterID}:${Password}@www.mydns.jp/login.html" if [ ${ipv4} -eq 0 ] then curl ${URL} -o /dev/null 1> /dev/null 2>&1 && ipv4=1 ans=`dig $Domain A +short` logger -p user.info -t mydns "Status ifname=${ifname}, ${inet}=${ipaddr}, Ans=${ans}, Update=${ipv4}" fi ;; esac done ===== No-IP ===== #!/bin/sh # Domain="domain2.com" LoginID="XXXXXXXX" Password="xxxxxxxxxx" IfName="eth0" UA="User-Agent: ${LoginID} Update-No-ip/Raspbian GNU/Linux 10 (buster) ${Email}" ipv4=0 ipv6=0 ip -o addr show | while read num ifname inet ipaddr other do test "$ifname" != "$IfName" && continue echo $other | grep "scope global" > /dev/null || continue echo $other | grep "mngtmpaddr" > /dev/null && continue case $inet in inet6) url="https://${LoginID}:${Password}@dynupdate.no-ip.com/nic/update?hostname=${Domain}" data="myipv6=${ipaddr%%/*}" if [ ${ipv6} -eq 0 ] then res=`curl -s -A "${UA}" "${url}" --data-urlencode "${data}" 2>&1 | head -n 1 | tr -d '\r'` && ipv6=1 ans=`dig $Domain AAAA +short` logger -p user.info -t No-ip "Status ifname=${ifname}, ${inet}=${ipaddr}, Ans=${ans}, Query=${ipv6}, Res='${res}'" fi ;; inet) url="https://${LoginID}:${Password}@dynupdate.no-ip.com/nic/update?hostname=${Domain}" if [ ${ipv4} -eq 0 ] then res=`curl -s -A "${UA}" "${url}" 2>&1 | head -n 1 | tr -d '\r'` && ipv4=1 ans=`dig $Domain A +short` logger -p user.info -t No-ip "Status ifname=${ifname}, ${inet}=${ipaddr}, Ans=${ans}, Query=${ipv4}, Res='${res}'" fi ;; esac done