前提条件
获取解析记录
修改解析记录
定时更新任务
前提条件
已经在qcloud上注册了域名,并随意定义了域名解析地址;
拥有云API秘钥,SecretId、SecretKey;https://cloud.tencent.com/document/product/583/33449
获取配置信息
SCF CLI 可配置的内容包括默认操作地域、账号 ID、账号的 SecretID 及 SecretKey。 各个配置信息的获取位置如下:
拥有可外网访问的IP地址;
Linux可以访问外网。
获取解析记录
#!/bin/bash domain='你的域名,例如qq.com' subDomain='你希望解析的子域名,例如wx.qq.com,则只输入wx' sId='你的云API秘钥SecretId' sKey='你的云API秘钥SecretKey' signatureMethod='HmacSHA1' timestamp=`date +%s` nonce=`head -200 /dev/urandom | cksum | cut -f2 -d" "` region=bj url="https://cns.api.qcloud.com/v2/index.php" #获取域名解析条目ID:recordId action='RecordList' src=`printf "GETcns.api.qcloud.com/v2/index.php?Action=%s&Nonce=%s&Region=%s&SecretId=%s&SignatureMethod=%s&Timestamp=%s&domain=%s" $action $nonce $region $sId $signatureMethod $timestamp $domain` #echo 'src: ' $src signature=`echo -n $src|openssl dgst -sha1 -hmac $sKey -binary |base64` #echo 'signature: ' $signature params=`printf "Action=%s&domain=%s&Nonce=%s&Region=%s&SecretId=%s&Signature=%s&SignatureMethod=%s&Timestamp=%s" $action $domain $nonce $region $sId "$signature" $signatureMethod $timestamp ` #echo 'params: ' $params curl -G -d "$params" --data-urlencode "Signature=$signature" "$url" > 1.txt cat 1.txt echo '名解析条目ID:recordId' sed "s/records\"\:\[{/\n/g" 1.txt | grep '^"id' | sed 's/{"id"/\n"id"/g' | grep ${subDomain} | awk -F':|,' '{print$2}'
修改解析记录
#!/bin/bash #/usr/bin/ddns recordId='根据上面返回结果,手工填入,好像是几位数字' domain='你的域名,例如qq.com' subDomain='你希望解析的子域名,例如wx.qq.com,则只输入wx' sId='你的云API秘钥SecretId' sKey='你的云API秘钥SecretKey' signatureMethod='HmacSHA1' timestamp=`date +%s` nonce=`head -200 /dev/urandom | cksum | cut -f2 -d" "` region=bj url="https://cns.api.qcloud.com/v2/index.php" #获取ip#ip=`curl http://2019.ip138.com/ic.asp >/dev/null|iconv -fgb2312 -t utf-8 |sed 's/.*\[\(.*\)\].*/\1/g'` #上面自动获取的网址已经失效,结果等同于,需要解析到的域名,如下 ip=XX.XX.XX.XX action='RecordModify' recordType='A' recordLine='默认' value=$iptimestamp=`date +%s` nonce=`head -200 /dev/urandom | cksum | cut -f2 -d" "` src=`printf "GETcns.api.qcloud.com/v2/index.php?Action=%s&Nonce=%s&Region=%s&SecretId=%s&SignatureMethod=%s&Timestamp=%s&domain=%s&recordId=%s&recordLine=%s&recordType=%s&subDomain=%s&value=%s" $action $nonce $region $sId $signatureMethod $timestamp $domain $recordId $recordLine $recordType $subDomain $value` #echo 'src: ' $src signature=`echo -n $src|openssl dgst -sha1 -hmac $sKey -binary |base64` #echo 'signature: ' $signature params=`printf "Action=%s&Nonce=%s&Region=%s&SecretId=%s&SignatureMethod=%s&Timestamp=%s&domain=%s&recordId=%s&recordLine=%s&recordType=%s&subDomain=%s&value=%s" $action $nonce $region $sId $signatureMethod $timestamp $domain $recordId $recordLine $recordType $subDomain $value` #echo 'params: ' $params curl -G -d "$params" --data-urlencode "Signature=$signature" "$url"
原文链接:https://blog.csdn.net/dragon2k/article/details/88016755
action:其他类型:https://cloud.tencent.com/document/product/302/8514 添加记录:Action=RecordCreate 修改状态:Action=RecordStatus 修改记录:Action=RecordModify 获取列表:Action=RecordList 删除记录:Action=RecordDelete
Comments | NOTHING