Created
November 14, 2018 11:48
-
-
Save uavana/e248d849d758d98e80539175f6704caa to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #Dnspod DDNS with BashShell | |
| #Github:https://github.com/lixuy/dnspod-ddns-with-bashshell | |
| #More: https://03k.org/dnspod-ddns-with-bashshell.html | |
| #CONF START | |
| API_ID=$1 | |
| API_Token=S2 | |
| domain=$3 | |
| host=$4 | |
| Email=$5 | |
| CHECKURL="http://ip.qq.com" | |
| #OUT="pppoe" | |
| #CONF END | |
| . /etc/profile | |
| date | |
| if (echo $CHECKURL |grep -q "://");then | |
| IPREX='([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' | |
| URLIP=$(curl $(if [ -n "$OUT" ]; then echo "--interface $OUT"; fi) -s $CHECKURL|grep -Eo "$IPREX"|tail -n1) | |
| echo "[URL IP]:$URLIP" | |
| dnscmd="nslookup";type nslookup >/dev/null 2>&1||dnscmd="ping -c1" | |
| DNSTEST=$($dnscmd $host.$domain) | |
| if [ "$?" == 0 ];then | |
| DNSIP=$(echo $DNSTEST|grep -Eo "$IPREX"|tail -n1) | |
| else DNSIP="Get $host.$domain DNS Failed." | |
| fi | |
| echo "[DNS IP]:$DNSIP" | |
| if [ "$DNSIP" == "$URLIP" ];then | |
| echo "IP SAME IN DNS,SKIP UPDATE." | |
| exit | |
| fi | |
| fi | |
| token="login_token=${API_ID},${API_Token}&format=json&lang=en&error_on_empty=yes&domain=${domain}&sub_domain=${host}" | |
| UA="User-Agent: 03K DDNS Client/1.0.0 ($Email)" | |
| Record="$(curl $(if [ -n "$OUT" ]; then echo "--interface $OUT"; fi) -s -X POST https://dnsapi.cn/Record.List -d "${token}")" | |
| iferr="$(echo ${Record#*code}|cut -d'"' -f3)" | |
| if [ "$iferr" == "1" ];then | |
| record_ip=$(echo ${Record#*value}|cut -d'"' -f3) | |
| echo "[API IP]:$record_ip" | |
| if [ "$record_ip" == "$URLIP" ];then | |
| echo "IP SAME IN API,SKIP UPDATE." | |
| exit | |
| fi | |
| record_id=$(echo ${Record#*\"records\"\:\[\{\"id\"}|cut -d'"' -f2) | |
| record_line_id=$(echo ${Record#*line_id}|cut -d'"' -f3) | |
| echo Start DDNS update... | |
| ddns="$(curl $(if [ -n "$OUT" ]; then echo "--interface $OUT"; fi) -s -X POST https://dnsapi.cn/Record.Ddns -d "${token}&record_id=${record_id}&record_line_id=${record_line_id}")" | |
| ddns_result="$(echo ${ddns#*message\"}|cut -d'"' -f2)" | |
| echo -n "DDNS upadte result:$ddns_result " | |
| echo $ddns|grep -Eo "$IPREX"|tail -n1 | |
| else echo -n Get $host.$domain error : | |
| echo $(echo ${Record#*message\"})|cut -d'"' -f2 | |
| fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment