Skip to content

Instantly share code, notes, and snippets.

@scateu
Last active October 15, 2016 23:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save scateu/4a34b7c032c87c9bc5c8 to your computer and use it in GitHub Desktop.
Save scateu/4a34b7c032c87c9bc5c8 to your computer and use it in GitHub Desktop.
Dnspod DDNS
# 1. Generate an API Token from dnspod.cn
# 2. create a record first
# 3. change $TMP_FILE
# 4. get your $DOMAIN_ID
# 5. change $NEW_IP generation method.
# 6. sudo apt-get install jq
TOKEN=12345,1234567890abcdef1234567890abcdef #TODO: change this TOKEN.
TMP_FILE=/tmp/scateu.me.list #TODO
# scateu.me
DOMAIN_ID=12345678 #TODO: change this ID, you may get your domain ID using the following line.
#DOMAIN_ID=$(curl https://dnsapi.cn/Domain.List -d "login_token=$TOKEN&format=json" | jq ".domains[] | select(.name==\"scateu.me\") .id")
# Fetch scateu.me record list.
curl -s https://dnsapi.cn/Record.List -d "login_token=$TOKEN&format=json&domain_id=$DOMAIN_ID" > $TMP_FILE
function UpdateDDNS {
_ID=$1
_OLD_IP=$2
_NEW_IP=$3
_DOMAIN_NAME=$4
_DOMAIN_ID=$5
_TOKEN=$6
echo "#### $_DOMAIN_NAME #### "
echo OLD_IP = $_OLD_IP
echo NEW_IP = $_NEW_IP
if [[ $_OLD_IP == $_NEW_IP ]]
then
echo "IP didn't change, exit."
else
echo "Update IP"
curl -s -X POST https://dnsapi.cn/Record.Ddns -d "login_token=$_TOKEN&format=json&sub_domain=$_DOMAIN_NAME&domain_id=$_DOMAIN_ID&record_id=$_ID&value=$_NEW_IP&record_line=默认"
fi
echo
echo
}
## 1. example1.scateu.me
DOMAIN_NAME=example
ID=$(echo $(jq ".records[] | select(.name==\"$DOMAIN_NAME\") .id" $TMP_FILE) | sed -e 's/^"//' -e 's/"$//')
OLD_IP=$(echo $(jq ".records[] | select(.name==\"$DOMAIN_NAME\") .value" $TMP_FILE) | sed -e 's/^"//' -e 's/"$//')
NEW_IP=$(/sbin/ifconfig wlan0 |grep Mask | awk '{ print $2;}' |cut -d : -f 2) # TODO: change this line.
UpdateDDNS $ID $OLD_IP $NEW_IP $DOMAIN_NAME $DOMAIN_ID $TOKEN
## 2 example2.scateu.me
DOMAIN_NAME=example2
OLD_IP=$(echo $(jq ".records[] | select(.name==\"$DOMAIN_NAME\") .value" $TMP_FILE) | sed -e 's/^"//' -e 's/"$//')
ID=$(echo $(jq ".records[] | select(.name==\"$DOMAIN_NAME\") .id" $TMP_FILE) | sed -e 's/^"//' -e 's/"$//')
NEW_IP=$(/sbin/ifconfig eth0 |grep Mask | awk '{ print $2;}' | cut -d : -f 2) # TODO: change this line.
UpdateDDNS $ID $OLD_IP $NEW_IP $DOMAIN_NAME $DOMAIN_ID $TOKEN
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment