参考文章:https://blog.csdn.net/dragon2k/article/details/88016755
在此基础上进行修改,以达到我个人日常使用的目的。
贴出代码以供参考
进都进来了,我就默认你基础的东西都弄好了,只差脚本了
#!/usr/bin/env bash
# =========================================
# 个人信息
# =========================================
domain='xxx.com'
subDomain='www'
sId='去自己的控制台-访问密钥 获取'
sKey='去自己的控制台-访问密钥 获取'
# 一般不会变动,所以手动就行,包含在注释掉的打印信息中
recordId='一串数字'
# =========================================
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 的 api,可以自己替换
ip=$(curl -s ip.cip.cc)
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)
signature=$(echo -n $src | openssl dgst -sha1 -hmac $sKey -binary | base64)
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)
ret=$(curl -s -G -d "$params" --data-urlencode "Signature=$signature" "$url")
# echo $ret # recordId 在这里打印,打开这里运行一次
echo $ret | grep $ip > /dev/null
if [[ $? = 0 ]]; then
echo '无需更新'
else
action='RecordModify'
recordType='A'
recordLine='默认'
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 $ip)
signature=$(echo -n $src | openssl dgst -sha1 -hmac $sKey -binary | base64)
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 $ip)
ret=$(curl -s -G -d "$params" --data-urlencode "Signature=$signature" "$url")
echo $ret | grep 'code":0' > /dev/null
if [[ $? = 0 ]]; then
echo '更新成功'
else
echo '更新失败'
exit 1
fi
fi
crontab -e
加入
*/10 * * * * /你的脚本位置
每十分钟跑一次,因为出错率很小,所以就不做日志了