找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 8359|回复: 10

移植F大的阿里DDNS

[复制链接]
发表于 2016-12-6 09:35 | 显示全部楼层 |阅读模式
按照lede的位置把文件放到相同的位置能运行 但是无法更新IP
代码如下:
#!/bin/sh
#copyright by koolshare.cn fw867

aliddns_ak=`uci get aliddns.base.app_key 2>/dev/null`
aliddns_sk=`uci get aliddns.base.app_secret 2>/dev/null`
aliddns_record_id=`uci get aliddns.base.record_id 2>/dev/null`
time=`uci get aliddns.base.time 2>/dev/null`
aliddns_enable=`uci get aliddns.base.enable`
aliddns_domain=`uci get aliddns.base.main_domain 2>/dev/null`
aliddns_name=`uci get aliddns.base.sub_domain 2>/dev/null`
interface=`uci get aliddns.base.interface 2>/dev/null`
DATE=$(date +'%Y-%m-%d %H:%M:%S')
timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`
ip=$(ifconfig $interface 2> /dev/null | grep 'inet addr' | awk '{print $2}' | cut -d: -f2  2>/dev/null)

check_aliddns() {
#ip=`curl http://whatismyip.akamai.com/ 2>/dev/null`
current_ip=`nslookup $aliddns_name.$aliddns_domain | grep "Address 1"|tail -n1|cut -d' ' -f3  2>/dev/null`
echo "$DATE 当前路由IP: ${ip}" >> /var/log/aliddns.log
echo "$DATE 远程解析IP: ${current_ip}" >> /var/log/aliddns.log
if [ "$ip" = "$current_ip" ]
then
   echo "$DATE IP未改变,无需更新" >> /var/log/aliddns.log
   exit 0
  else
   echo "$DATE 更新中..." >> /var/log/aliddns.log  
fi
}

urlencode() {
    # urlencode <string>

    local length="${#1}"
    i=0
    out=""
    for i in $(awk "BEGIN { for ( i=0; i<$length; i++ ) { print i; } }")
    do
        local c="${1i:1}"
        case $c in
            [a-zA-Z0-9._-]) out="$out$c" ;;
            *) out="$out`printf '%%%02X' "'$c"`" ;;
        esac
        i=$(($i + 1))
    done
    echo -n $out
}

send_request() {
    local args="AccessKeyId=$aliddns_ak&Action=$1&Format=json&$2&Version=2015-01-09"
    local hash=$(urlencode $(echo -n "GET&%2F&$(urlencode $args)" | openssl dgst -sha1 -hmac "$aliddns_sk&" -binary | openssl base64))
    curl "http://alidns.aliyuncs.com/?$args&Signature=$hash" 2> /dev/null
}

get_recordid() {
    grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'
}

query_recordid() {
    send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddns_name.$aliddns_domain&Timestamp=$timestamp"
}

update_record() {
    send_request "UpdateDomainRecord" "RR=$aliddns_name&RecordId=$1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&Timestamp=$timestamp&Type=A&Value=$ip"
}

add_record() {
    send_request "AddDomainRecord&DomainName=$aliddns_domain" "RR=$aliddns_name&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&Timestamp=$timestamp&Type=A&Value=$ip"
}

go_record() {
if [ "$aliddns_record_id" = "" ]
then
    aliddns_record_id=`query_recordid | get_recordid`
fi
if [ "$aliddns_record_id" = "" ]
then
    aliddns_record_id=`add_record | get_recordid`
    echo "$DATE 添加 record $aliddns_record_id" >> /var/log/aliddns.log
else
    update_record $aliddns_record_id
    echo "$DATE 更新 record $aliddns_record_id" >> /var/log/aliddns.log
fi
# save to file
if [ "$aliddns_record_id" = "" ]; then
    # failed
    echo "$DATE : 更新出错,请检查设置!" >> /var/log/aliddns.log
    exit 0
else
    #uci set aliddns.base.record_id=$aliddns_record_id
    #uci commit
    echo "$DATE : 更新成功!($ip)" >> /var/log/aliddns.log
fi  
}
#将执行脚本写入crontab定时运行
add_aliddns_cru(){
wirtecron=$(cat /etc/crontabs/root | grep "$time * * * *" | grep aliddns)
if [ -z "$wirtecron" ];then
  sed -i '/aliddns/d' /etc/crontabs/root >/dev/null 2>&1
  echo "*/$time * * * * /usr/sbin/aliddns" >> /etc/crontabs/root
fi
}

#清除过多记录
clean_log(){
logrow=$(grep -c "" /var/log/aliddns.log)
if [ $logrow -ge 15 ];then
  cat /dev/null > /var/log/aliddns.log
  echo "$DATE Log条数超限,清空处理!" >> /var/log/aliddns.log
fi
}

#停止服务
stop_aliddns(){
        #停掉cru里的任务
  sed -i '/aliddns/d' /etc/crontabs/root >/dev/null 2>&1
}

if [ "$aliddns_enable" != "1" ]; then
    stop_aliddns
    echo "$DATE : aliddns没有开启!" >> /var/log/aliddns.log
  else
    clean_log
    check_aliddns
    go_record
    add_aliddns_cru  
fi




log如下:
2016-12-06 09:00:00 当前路由IP: 112.87.108.26
2016-12-06 09:00:00 远程解析IP: 122.193.118.249
2016-12-06 09:00:00 更新中...
2016-12-06 09:00:00 更新 record 89825821
2016-12-06 09:00:00 : 更新成功!(112.87.108.26)
2016-12-06 09:07:20 当前路由IP: 112.87.108.26
2016-12-06 09:07:20 远程解析IP: 122.193.118.249
2016-12-06 09:07:20 更新中...
2016-12-06 09:07:20 更新 record 89825821
2016-12-06 09:07:20 : 更新成功!(112.87.108.26)


求各位老大帮帮忙看一下
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2016-12-6 17:51 | 显示全部楼层
顶  没人来么?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2016-12-6 17:54 | 显示全部楼层
不错学习下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2016-12-6 19:31 | 显示全部楼层
兄弟,能把包发上来给我安装试试吗? 找很久了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2016-12-7 07:34 | 显示全部楼层
mjyhj 发表于 2016-12-6 19:31
兄弟,能把包发上来给我安装试试吗? 找很久了

没有包  从固件里找的文件放到OPenwrt里面的
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2016-12-7 14:21 | 显示全部楼层
本帖最后由 mjyhj 于 2016-12-7 18:28 编辑
feng23168 发表于 2016-12-7 07:34
没有包  从固件里找的文件放到OPenwrt里面的

能发给我吗???我想试试,加我Q 171285200
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2017-1-28 21:38 | 显示全部楼层
能把包发上来给我安装试试吗? 找很久了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2017-8-29 09:01 来自手机 | 显示全部楼层
record ID清空再试
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2017-8-29 19:55 | 显示全部楼层


这个openwrt可以用

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2017-8-30 19:51 来自手机 | 显示全部楼层
删掉record_id.再试一试就可以了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2017-9-18 12:31 来自手机 | 显示全部楼层
正需要 阿里ddns 加u盘挂载 加 ftp 组成远程私有云
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-19 05:12

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表