找回密码
 立即注册

QQ登录

只需一步,快速开始

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

移植F大的阿里DDNS

[复制链接]
按照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.
 楼主| | 显示全部楼层
顶  没人来么?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

不错学习下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

兄弟,能把包发上来给我安装试试吗? 找很久了

点评

没有包 从固件里找的文件放到OPenwrt里面的  详情 回复 发表于 2016-12-7 07:34
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

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

使用道具 举报

本帖最后由 mjyhj 于 2016-12-7 18:28 编辑
feng23168 发表于 2016-12-7 07:34
没有包  从固件里找的文件放到OPenwrt里面的

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

使用道具 举报

能把包发上来给我安装试试吗? 找很久了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
record ID清空再试
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报



这个openwrt可以用

本帖子中包含更多资源

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

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

使用道具 举报

来自手机 | 显示全部楼层
删掉record_id.再试一试就可以了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

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

GMT+8, 2024-4-28 15:36

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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