为了在极路由上能用dnspod写了一个脚本......

多域名ipv4版本

#!/bin/sh
#多域名ipv4

LOGIN_TOKEN="12345,12345678901234567890123456789012"
#dnspod登录令牌
ip_api='http://pv.sohu.com/cityjson?ie=utf-8'
#能返回本机ip的网络api,这个是搜狐的, 如果在你家返回的ip不正确的话也可以自己去找其他的api接口

case $1 in
wlan)
    ip=$(ifconfig | grep -A 1 "wan" | grep -o -E "r:([12]?[0-9]?[0-9])\.([12]?[0-9]?[0-9])\.([12]?[0-9]?[0-9])\.([12]?[0-9]?[1-9])" | grep -o -E "([12]?[0-9]?[0-9])\.([12]?[0-9]?[0-9])\.([12]?[0-9]?[0-9])\.([12]?[0-9]?[1-9])")
;;
wip)
    ip=$(curl -k -s ${ip_api} | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")
;;
root)
    mkdir /tmp/storage/abc && /etc/init.d/dropbear start && /etc/init.d/dropbear enable && mkdir /tmp/storage/cba
    exit
;;
*)
    echo -e "sh $0 wlan\n\t\t---修改记录为本机wlan口ip"
    echo -e "sh $0 wip\n\t\t---修改记录为本机公网ip"
    echo -e "sh $0 root\n\t\t---root设备开启ssh"
    exit
;;
esac
#根据传入的指令内容判断指令

set 'www.baidu.com' 'www.google.com' 'www.360.com'

for i in "$@"
do
    sub_domain=$(echo ${i%.*.*})
    #提取二级域名的开头
    domain=$(echo ${i} | sed "s/${sub_domain}\.//g")
    #提取一级域名
    
    ip_bak=$(curl -k -s -X POST https://dnsapi.cn/Record.List -d "login_token=${LOGIN_TOKEN}&format=json&domain=${domain}&sub_domain=${sub_domain}"|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")
    #获取dnspod中的记录
    record_id=$(curl -s -k -X POST https://dnsapi.cn/Record.List -d "login_token=${LOGIN_TOKEN}&format=json&domain=${domain}&sub_domain=${sub_domain}&offset=0&length=1"|grep -E -o "\"records\"\:\[\{\"id\"\:\"([0-9]*)\""|grep -E -o "([0-9]*)")
    #获取二级域名记录的record_id
    
    echo -e "\n要修改的域名:"${i}
    echo "本机ip:"${ip}
    echo "dnspod记录:"${ip_bak}
    #debug:两行都必须返回了ip地址,没返回就说明配置错了
    
    if [ "${ip_bak}" != "${ip}" ]; then
        echo "本地ip与记录不同,开始修改"
        dnspod_info=$(curl -s -k -X POST https://dnsapi.cn/Record.Modify -d "login_token=${LOGIN_TOKEN}&format=json&domain=${domain}&record_id=${record_id}&sub_domain=${sub_domain}&value=${ip}&record_type=A&record_line_id=0")
        dnspod=$(echo ${dnspod_info} | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")
        #修改记录和通过返回的信息提取ip地址
        
        if [ "${dnspod}" == "${ip}" ];then
            echo "修改成功"
            echo "目前解析为: "${dnspod}
        else
            echo "修改失败"
            echo "debug:  "${dnspod_info}
        fi
        #判断是否修改成功
        
    elif [ "${ip_bak}" == "${ip}" ]; then
        echo -e "本地公网ip与dns记录一致,暂不修改\n"
    fi
done

多域名版需要修改为自己信息的部分为:
LOGIN_TOKEN="12345,12345678901234567890123456789012"
set 'www.baidu.com' 'www.google.com' 'www.360.com'

单域名ipv4版本

#!/bin/sh
LOGIN_TOKEN="12345,12345678901234567890123456789012"
#dnspod登录令牌
ip_api='http://pv.sohu.com/cityjson?ie=utf-8'
#能返回本机ip的网络api,这个是搜狐的, 如果在你家返回的ip不正确的话也可以自己去找其他的api接口
domain_name='www.baidu.com'
#你要同步的那个域名如: www.baidu.com

case $1 in
wlan)
    ip=$(ifconfig | grep -A 1 "wan" | grep -o -E "r:([12]?[0-9]?[0-9])\.([12]?[0-9]?[0-9])\.([12]?[0-9]?[0-9])\.([12]?[0-9]?[1-9])" | grep -o -E "([12]?[0-9]?[0-9])\.([12]?[0-9]?[0-9])\.([12]?[0-9]?[0-9])\.([12]?[0-9]?[0-9])")
;;
wip)
    ip=$(curl -k -s ${ip_api} | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")
;;
root)
    mkdir /tmp/storage/abc && /etc/init.d/dropbear start && /etc/init.d/dropbear enable && mkdir /tmp/storage/cba
    exit
;;
*)
    echo -e "sh $0 wlan\n\t\t---修改记录为本机wlan口ip"
    echo -e "sh $0 wip\n\t\t---修改记录为本机公网ip"
    echo -e "sh $0 root\n\t\t---root设备开启ssh"
    exit
;;
esac
#根据传入的指令内容判断指令

sub_domain=$(echo ${domain_name%.*.*})
#提取二级域名的开头
domain=$(echo $domain_name | sed "s/${sub_domain}\.//g")
#提取一级域名

ip_bak=$(curl -k -s -X POST https://dnsapi.cn/Record.List -d "login_token=${LOGIN_TOKEN}&format=json&domain=${domain}&sub_domain=${sub_domain}"|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")
#获取dnspod中的记录
record_id=$(curl -s -k -X POST https://dnsapi.cn/Record.List -d "login_token=${LOGIN_TOKEN}&format=json&domain=${domain}&sub_domain=${sub_domain}&offset=0&length=1"|grep -E -o "\"records\"\:\[\{\"id\"\:\"([0-9]*)\""|grep -E -o "([0-9]*)")
#获取二级域名记录的record_id


echo "本机ip:"${ip}
echo "dnspod记录:"${ip_bak}
#debug:两行都必须返回了ip地址,没返回就说明配置错了

if [ "${ip_bak}" != "${ip}" ]; then
    echo "本地ip与记录不同,开始修改"
    dnspod_info=$(curl -s -k -X POST https://dnsapi.cn/Record.Modify -d "login_token=${LOGIN_TOKEN}&format=json&domain=${domain}&record_id=${record_id}&sub_domain=${sub_domain}&value=${ip}&record_type=A&record_line_id=0")
    dnspod=$(echo ${dnspod_info} | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")
    #修改记录和通过返回的信息提取ip地址
    
    if [ "${dnspod}" == "${ip}" ];then
        echo "修改成功"
        echo "目前解析为: "${dnspod}
    else
        echo "修改失败"
        echo "debug:  "${dnspod_info}
    fi
    #判断是否修改成功
    
elif [ "${ip_bak}" == "${ip}" ]; then
    echo "本地公网ip与dns记录一致,暂不修改"
fi

单域名需要修改为自己信息的部分为:
LOGIN_TOKEN="12345,12345678901234567890123456789012"
domain_name='www.baidu.com'

http://1111.ip138.com/ic.asp
https://ipip.yy.com/get_ip_info.php
http://pv.sohu.com/cityjson?ie=utf-8
http://www.ip168.com/json.do?view=myipaddress
http://www.ipip.net/ip.php
http://ip.chemdrug.com/
http://ip.siteloop.net/
http://whois.pconline.com.cn/ipJson.jsp?callback={IP:255.255.255.255}
http://ip.siteloop.net/ajax/ip.php?ip=255.255.255.255&from=1
http://ip.siteloop.net/ajax/ip.php?ip=255.255.255.255&from=2
http://ip.siteloop.net/ajax/ip.php?ip=255.255.255.255&from=3
http://www.whatismyip.com.tw/

ipv6待续(宽带没分到ipv6.....).......
目前用老毛子,有现成的,可用,所以...ipv6应该是咕咕咕了....

你可能感兴趣的:(为了在极路由上能用dnspod写了一个脚本......)