简单五步设置群晖NAS绑定阿里云自有域名实现外网访问
1.注册阿里云账号。
2.注册一个域名。
如果域名不在阿里云解析托管,需要先转过去,具体方法是联系域名提供商修改域名的DNS服务器,修改方式参考这里:https://help.aliyun.com/knowledge_detail/39844.html
然后去控制台找到云解析,将域名添加进去;
3.到阿里云控制中心找到access key和secret并保存下来(强烈建议遵循阿里云安全最佳实践的说明 ,使用RAM子用户的AccessKey);
4.到群晖控制中心找到任务计划新增一个计划。
新增->计划的任务->用户自定义脚本
设置10分钟定时
复制附件中内容(附件:阿里云动态域名更新脚本.txt ),根据自己的情况修改中文部分并添加到任务设置自定义脚本
<ol class="hljs-ln"><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-meta" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(97, 174, 238); word-wrap: break-word;">#!/bin/sh</span></p></div></li><li><div class="div_content"></div> <div class="div_content"></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">aliddns_name=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"你的域名前缀"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">aliddns_domain=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"你的域名"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">aliddns_ak=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"你的AccessKeyId"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">aliddns_sk=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"你的AccessKeySecret"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">aliddns_curl=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"curl -s whatismyip.akamai.com"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">aliddns_dns=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"8.8.8.8"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">aliddns_ttl=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"600"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">ip=`<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_curl</span> 2>&1`</p></div></li><li><div class="div_content"></div> <div class="div_content"></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">current_ip=`nslookup <span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_name</span>.<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_domain</span> <span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_dns</span> 2>&1`</p></div></li><li><div class="div_content"></div> <div class="div_content"></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">if</span> [ <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"$?"</span> -eq <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"0"</span> ]</p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">then</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> current_ip=`<span class="hljs-built_in" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(230, 192, 123); word-wrap: break-word;">echo</span> <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$current_ip</span>"</span> │ grep <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">''Address 1''</span> │ tail -n1 │ awk <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">''{print $NF}''</span>`</p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">if</span> [ <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$ip</span>"</span> = <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$current_ip</span>"</span> ]</p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">then</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-built_in" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(230, 192, 123); word-wrap: break-word;">exit</span> 0</p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">fi</span> </p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">fi</span></p></div></li><li><div class="div_content"></div> <div class="div_content"></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">timestamp=`date -u <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"+%Y-%m-%dT%H%%3A%M%%3A%SZ"</span>`</p></div></li><li><div class="div_content"></div> <div class="div_content"></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-function" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;"><span class="hljs-title" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(97, 174, 238); word-wrap: break-word;">urlencode</span></span>() {</p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-comment" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(92, 99, 112); font-style: italic; word-wrap: break-word;"># urlencode <string></string></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> out=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">""</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">while</span> <span class="hljs-built_in" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(230, 192, 123); word-wrap: break-word;">read</span> -n1 c</p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">do</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">case</span> <span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$c</span> <span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">in</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> [a-zA-Z0-9._-]) out=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$out</span><span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$c</span>"</span> ;;</p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> *) out=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$out</span>`printf ''%%%02X'' "</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">''$c"`" ;;</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> esac</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> done</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> echo -n $out</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">}</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">enc() {</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> echo -n "$1" │ urlencode</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">}</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">send_request() {</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> local args="AccessKeyId=$aliddns_ak&Action=$1&Format=json&$2&Version=2015-01-09"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> local hash=$(echo -n "GET&%2F&$(enc "$args")" │ openssl dgst -sha1 -hmac "$aliddns_sk&" -binary │ openssl base64)</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">}</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">get_recordid() {</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> grep -Eo ''</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"RecordId"</span>:<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"[0-9]+"</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">'' │ cut -d''</span>:<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">'' -f2 │ tr -d ''</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"''</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">}</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">query_recordid() {</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> send_request "</span>DescribeSubDomainRecords<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">" "</span>SignatureMethod=HMAC-SHA1&SignatureNonce=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$timestamp</span>&SignatureVersion=1.0&SubDomain=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_name</span>.<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_domain</span>&Timestamp=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$timestamp</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">}</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">update_record() {</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> send_request "</span>UpdateDomainRecord<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">" "</span>RR=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_name</span>&RecordId=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$1</span>&SignatureMethod=HMAC-SHA1&SignatureNonce=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$timestamp</span>&SignatureVersion=1.0&TTL=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_ttl</span>&Timestamp=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$timestamp</span>&Type=A&Value=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$ip</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">}</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">add_record() {</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> send_request "</span>AddDomainRecord&DomainName=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_domain</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">" "</span>RR=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_name</span>&SignatureMethod=HMAC-SHA1&SignatureNonce=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$timestamp</span>&SignatureVersion=1.0&TTL=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_ttl</span>&Timestamp=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$timestamp</span>&Type=A&Value=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$ip</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">}</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">if [ "</span><span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_record_id</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">" = "</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">" ]</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">then</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> aliddns_record_id=`query_recordid │ get_recordid`</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">fi</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">if [ "</span><span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_record_id</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">" = "</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">" ]</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">then</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> aliddns_record_id=`add_record │ get_recordid`</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> echo "</span>added record <span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_record_id</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">else</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> update_record <span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_record_id</span></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> echo "</span>updated record <span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_record_id</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">fi</span></p></div></li></ol><ol class="hljs-ln"><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-meta" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(97, 174, 238); word-wrap: break-word;">#!/bin/sh</span></p></div></li><li><div class="div_content"></div> <div class="div_content"></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">aliddns_name=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"你的域名前缀"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">aliddns_domain=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"你的域名"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">aliddns_ak=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"你的AccessKeyId"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">aliddns_sk=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"你的AccessKeySecret"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">aliddns_curl=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"curl -s whatismyip.akamai.com"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">aliddns_dns=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"8.8.8.8"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">aliddns_ttl=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"600"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">ip=`<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_curl</span> 2>&1`</p></div></li><li><div class="div_content"></div> <div class="div_content"></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">current_ip=`nslookup <span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_name</span>.<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_domain</span> <span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_dns</span> 2>&1`</p></div></li><li><div class="div_content"></div> <div class="div_content"></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">if</span> [ <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"$?"</span> -eq <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"0"</span> ]</p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">then</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> current_ip=`<span class="hljs-built_in" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(230, 192, 123); word-wrap: break-word;">echo</span> <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$current_ip</span>"</span> │ grep <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">''Address 1''</span> │ tail -n1 │ awk <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">''{print $NF}''</span>`</p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">if</span> [ <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$ip</span>"</span> = <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$current_ip</span>"</span> ]</p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">then</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-built_in" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(230, 192, 123); word-wrap: break-word;">exit</span> 0</p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">fi</span> </p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">fi</span></p></div></li><li><div class="div_content"></div> <div class="div_content"></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p">timestamp=`date -u <span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"+%Y-%m-%dT%H%%3A%M%%3A%SZ"</span>`</p></div></li><li><div class="div_content"></div> <div class="div_content"></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-function" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;"><span class="hljs-title" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(97, 174, 238); word-wrap: break-word;">urlencode</span></span>() {</p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-comment" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(92, 99, 112); font-style: italic; word-wrap: break-word;"># urlencode <string></string></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> out=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">""</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">while</span> <span class="hljs-built_in" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(230, 192, 123); word-wrap: break-word;">read</span> -n1 c</p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">do</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> <span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">case</span> <span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$c</span> <span class="hljs-keyword" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(198, 120, 221); word-wrap: break-word;">in</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> [a-zA-Z0-9._-]) out=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$out</span><span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$c</span>"</span> ;;</p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"> *) out=<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$out</span>`printf ''%%%02X'' "</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">''$c"`" ;;</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> esac</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> done</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> echo -n $out</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">}</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">enc() {</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> echo -n "$1" │ urlencode</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">}</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">send_request() {</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> local args="AccessKeyId=$aliddns_ak&Action=$1&Format=json&$2&Version=2015-01-09"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> local hash=$(echo -n "GET&%2F&$(enc "$args")" │ openssl dgst -sha1 -hmac "$aliddns_sk&" -binary │ openssl base64)</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">}</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">get_recordid() {</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> grep -Eo ''</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"RecordId"</span>:<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"[0-9]+"</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">'' │ cut -d''</span>:<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">'' -f2 │ tr -d ''</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"''</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">}</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">query_recordid() {</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> send_request "</span>DescribeSubDomainRecords<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">" "</span>SignatureMethod=HMAC-SHA1&SignatureNonce=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$timestamp</span>&SignatureVersion=1.0&SubDomain=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_name</span>.<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_domain</span>&Timestamp=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$timestamp</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">}</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">update_record() {</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> send_request "</span>UpdateDomainRecord<span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">" "</span>RR=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_name</span>&RecordId=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$1</span>&SignatureMethod=HMAC-SHA1&SignatureNonce=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$timestamp</span>&SignatureVersion=1.0&TTL=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_ttl</span>&Timestamp=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$timestamp</span>&Type=A&Value=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$ip</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">}</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">add_record() {</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> send_request "</span>AddDomainRecord&DomainName=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_domain</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">" "</span>RR=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_name</span>&SignatureMethod=HMAC-SHA1&SignatureNonce=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$timestamp</span>&SignatureVersion=1.0&TTL=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_ttl</span>&Timestamp=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$timestamp</span>&Type=A&Value=<span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$ip</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">}</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">if [ "</span><span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_record_id</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">" = "</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">" ]</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">then</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> aliddns_record_id=`query_recordid │ get_recordid`</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">fi</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">if [ "</span><span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_record_id</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">" = "</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">" ]</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">then</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> aliddns_record_id=`add_record │ get_recordid`</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> echo "</span>added record <span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_record_id</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">else</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> update_record <span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_record_id</span></span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;"> echo "</span>updated record <span class="hljs-variable" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(209, 154, 102); word-wrap: break-word;">$aliddns_record_id</span><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">"</span></p></div></li><li><div class="div_content"></div> <div class="div_content"><p class="node-read-div2p"><span class="hljs-string" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: rgb(152, 195, 121); word-wrap: break-word;">fi</span></p></div></li></ol>
-
#!/bin/sh
-
-
aliddns_name="你的域名前缀"
-
aliddns_domain="你的域名"
-
aliddns_ak="你的AccessKeyId"
-
aliddns_sk="你的AccessKeySecret"
-
-
aliddns_curl="curl -s whatismyip.akamai.com"
-
aliddns_dns="8.8.8.8"
-
aliddns_ttl="600"
-
-
ip=`$aliddns_curl 2>&1`
-
-
current_ip=`nslookup $aliddns_name.$aliddns_domain $aliddns_dns 2>&1`
-
-
if [ "$?" -eq "0" ]
-
then
-
current_ip=`echo "$current_ip" │ grep ''Address 1'' │ tail -n1 │ awk ''{print $NF}''`
-
if [ "$ip" = "$current_ip" ]
-
then
-
exit 0
-
fi
-
fi
-
-
timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`
-
-
urlencode() {
-
# urlencode
-
out=""
-
while read -n1 c
-
do
-
case $c in
-
[a-zA-Z0-9._-]) out="$out$c" ;;
-
*) out="$out`printf ''%%%02X'' "''$c"`" ;;
-
esac
-
done
-
echo -n $out
-
}
-
-
enc() {
-
echo -n "$1" │ urlencode
-
}
-
-
send_request() {
-
local args="AccessKeyId=$aliddns_ak&Action=$1&Format=json&$2&Version=2015-01-09"
-
local hash=$(echo -n "GET&%2F&$(enc "$args")" │ openssl dgst -sha1 -hmac "$aliddns_sk&" -binary │ openssl base64)
-
curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")"
-
}
-
-
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&TTL=$aliddns_ttl&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&TTL=$aliddns_ttl&Timestamp=$timestamp&Type=A&Value=$ip"
-
}
-
-
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 "added record $aliddns_record_id"
-
else
-
update_record $aliddns_record_id
-
echo "updated record $aliddns_record_id"
-
fi
5.设置好端口转发。如何设置群晖端口转发请自行百度。
该文章在 2021/10/12 18:14:03 编辑过
原文链接:http://cdm.clicksun.com.cn/mis/bbs/showbbs.asp?id=14482