这里会显示出您选择的修订版和当前版本之间的差别。
| 后一修订版 | 前一修订版 | ||
|
资源:实用脚本:群辉阿里云解析脚本 [2020/10/11 22:10] admin 创建 |
资源:实用脚本:群辉阿里云解析脚本 [2020/10/11 22:15] (当前版本) admin |
||
|---|---|---|---|
| 行 25: | 行 25: | ||
| ---- | ---- | ||
| - | ''aliddnsipv6_ak="阿里云控制台获取" | + | ---- |
| - | aliddnsipv6_sk="阿里云控制台获取" | + | |
| - | aliddnsipv6_name1="填DNS解析的AAAA字段(www/nas/tool/...)" | + | |
| - | aliddnsipv6_domain="填你的域名(aq520.com)" | + | |
| - | aliddnsipv6_ttl="600" | + | |
| - | if [ "$aliddnsipv6_name1" = "@" ] | ||
| - | then | ||
| - | aliddnsipv6_name=$aliddnsipv6_domain | ||
| - | else | ||
| - | aliddnsipv6_name=$aliddnsipv6_name1.$aliddnsipv6_domain | ||
| - | fi | ||
| - | |||
| - | now=`date` | ||
| - | |||
| - | die () { | ||
| - | echo $1 | ||
| - | } | ||
| - | |||
| - | ipv6s=`ip addr show eth0 | grep "inet6.*global" | awk '{print $2}' | awk -F"/" '{print $1}'` || die "$ipv6" | ||
| - | |||
| - | for ipv6 in $ipv6s | ||
| - | do | ||
| - | #ipv6 = $ipv6 | ||
| - | break | ||
| - | done | ||
| - | |||
| - | echo $ipv6 | ||
| - | |||
| - | current_ipv6=`nslookup -query=AAAA $aliddnsipv6_name 2>&1` | ||
| - | #echo $current_ipv6 | ||
| - | |||
| - | current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'` | ||
| - | echo $current_ipv6 | ||
| - | |||
| - | if [ "$?" -eq "0" ] | ||
| - | then | ||
| - | current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'` | ||
| - | echo $current_ipv6 | ||
| - | |||
| - | if [ "$ipv6" = "$current_ipv6" ] | ||
| - | then | ||
| - | echo "skipping" | ||
| - | fi | ||
| - | #fix when A record removed by manual dns is always update error | ||
| - | else | ||
| - | unset aliddnsipv6_record_id | ||
| - | fi | ||
| - | |||
| - | |||
| - | timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"` | ||
| - | |||
| - | |||
| - | urlencode() { | ||
| - | # urlencode <string> | ||
| - | 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=$aliddnsipv6_ak&Action=$1&Format=json&$2&Version=2015-01-09" | ||
| - | local hash=$(echo -n "GET&%2F&$(enc "$args")" | openssl dgst -sha1 -hmac "$aliddnsipv6_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=$aliddnsipv6_name&Timestamp=$timestamp&Type=AAAA" | ||
| - | } | ||
| - | |||
| - | update_record() { | ||
| - | send_request "UpdateDomainRecord" "RR=$aliddnsipv6_name1&RecordId=$1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddnsipv6_ttl&Timestamp=$timestamp&Type=AAAA&Value=$(enc $ipv6)" | ||
| - | } | ||
| - | |||
| - | add_record() { | ||
| - | send_request "AddDomainRecord&DomainName=$aliddnsipv6_domain" "RR=$aliddnsipv6_name1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddnsipv6_ttl&Timestamp=$timestamp&Type=AAAA&Value=$(enc $ipv6)" | ||
| - | } | ||
| - | |||
| - | #add support */%2A and @/%40 record | ||
| - | |||
| - | if [ "$aliddnsipv6_record_id" = "" ] | ||
| - | then | ||
| - | aliddnsipv6_record_id=`query_recordid | get_recordid` | ||
| - | #echo '-----------------' $aliddnsipv6_record_id | ||
| - | fi | ||
| - | if [ "$aliddnsipv6_record_id" = "" ] | ||
| - | then | ||
| - | aliddnsipv6_record_id=`add_record | get_recordid` | ||
| - | echo "added record $aliddnsipv6_record_id" | ||
| - | else | ||
| - | update_record $aliddnsipv6_record_id | ||
| - | echo "updated record $aliddnsipv6_record_id" | ||
| - | fi | ||
| - | |||
| - | '' | ||