http://www.anrip.com/post/872 开发背景: 公司有台嵌入式拨号上网设备,内置busybox和完整wget命令(支持https协议),但没有curl、python、ruby、php等扩展工具可用。网上现有基于DNSPod实现的Linux脚本无法在该设备上运行,于是在同事小路的协助下写了个Shell版动态域名客户端,现在发布出来希望能给需要的朋友带来一些方便。 相关链接: DnsPod官方文档 功能介绍: - 优雅的函数封装,灵活的更新策略 - 基于DNSPod最新用户API实现动态域名客户端 - 支持基于系统计划任务实现更新,防止脚本意外终止 - 可运行于多数类unix系统中,包括部分嵌入式小型系统 - 依赖sed/wget/nslookup命令,wget也可使用curl替代 更新说明: 2013年8月8日 - 默认DNS查询服务器更换为114.114.114.114 2013年5月23日 - [[]]替换为[],防止一些嵌入设备无此命令 2013年4月1日 - 完善说明文档 - 优化全局变量定义 - 刚发现DnsPod官方API示例已收录本文 2013年3月29日 - 从dns服务器获取子域名IP - 实现仅IP变更后才提交更新 2013年3月28日 - 现在是13年3月,故而第一个版本就定为v3.3吧 - 使用APIv4.6实现简单的动态更新功能 项目源码:  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/bin/sh
#################################################
# AnripDdns v3.08.08
# 基于DNSPod用户API实现的动态域名客户端
# 作者: 若海[mail@anrip.com]
# 介绍: http://www.anrip.com/ddnspod
# 时间: 2013-08-08 23:25:00
#################################################
# 全局变量表
# 获得外网地址
arIpAdress() {
    wget --quiet --no-check-certificate --output-document=- $inter
}
# 查询域名地址
# 参数: 待查询域名
arNslookup() {
    nslookup y36.xchun.net $dnsvr | tr -d '\n[:blank:]' | sed 's/.\+1 \([0-9\.]\+\)/\1/'
}
# 读取接口数据
# 参数: 接口类型 待提交数据
arApiPost() {
    wget --quiet --no-check-certificate --output-document=- --user-agent=$agent --post-data $param $inter
}
# 更新记录信息
# 参数: 主域名 子域名
arDdnsUpdate() {
    local domainID recordID recordRS recordCD
    # 获得域名ID
    # 获得记录ID
    # 更新记录IP
    # 输出记录IP
        return 1
    fi
    # 输出错误信息
}
# 动态检查更新
# 参数: 主域名 子域名
arDdnsCheck() {
    local postRS
    local hostIP=$(arIpAdress)
        postRS=$(arDdnsUpdate $1 $2)
        if [ $? -ne 1 ]; then
            return 0
        fi
    fi
    return 1
}
###################################################
# 设置用户参数
# 检查更新域名

相关文章: