2020年3月16日 星期一

在QNAP NAS上使用CloudFlare API 實現自動更新DDNS - SH檔更新法


最近需要讓NAS可以自動將自己的浮動IP上傳到Cloudflare上,以便連線。
試了兩個鐘頭,終於成功了。
中途卡在sh須轉為unix格式,原本是DOS格式,會造成運作上的錯誤。

原理是利用NAS自動執行一個sh檔,那個sh檔有上傳IP至Cloudflare的API

以下紀錄實作的參考網頁


文章1:[運用CloudFlare API實現DDNS] - Andy
→教學基本運用API的方法

API程式碼,把它存成一個.sh檔並放置於NAS裡的資料夾(自訂位置)

#!/bin/sh
# 將{ }替換為自己的資料
# GET Recore ID
#curl -x get "https://api.cloudflare.com/client/v4/zones/{YOUR_ZONE_ID}/dns_records" \
#-h "x-auth-email:{YOUR_EMAIL@gmail.com}" \
#-h "x-auth-key:{YOUR_GLOBAL_API_KEY}" \
#-h "content-type: application/json"
#

NEW_IP=`curl -s http://ipv4.icanhazip.com`
CURRENT_IP=`cat /tmp/current_ip.txt`


if [ "$NEW_IP" = "$CURRENT_IP" ];then
echo "No Change in IP Adddress"
else
curl -X PUT "https://api.cloudflare.com/client/v4/zones/****/dns_records/****" \
-H "X-Auth-Email: ***@gmail.com" \
-H "X-Auth-Key: ****" \
-H "Content-Type: application/json" \
--data '{"type":"A","name":"****","content":"'$NEW_IP'","ttl":1,"proxied":true}' > /dev/null
echo $NEW_IP > /tmp/current_ip.txt 
fi 




文章2:[[QNAP] 設定 NAS 的 crontab 定時執行程式] - Knuckles
→教學定時背景執行的方法
----------------------內文----------------------

注意要自動執行的 sh 檔不要放在 /root 裡
不然韌體更新後檔案會不見
要放在個人帳號的資料夾,例如 /share/homes/帳號/

QNAP 的 crontab 放在 /etc/config/crontab

例如要每日5:00執行 backup.sh 的話,加上這行

00 5 * * * /share/homes/帳號/backup.sh


存檔後,執行 crontab /etc/config/crontab 載入設定

執行 /etc/init.d/crond.sh restart 重啟 crontab


參考: http://wiki.qnap.com/wiki/Add_items_to_crontab


定時登入另一個網站下載備份檔的 script
例如要用帳號 knuckles 登入 example.com port 22
將 /home/knuckles/backup/ 裡面有更新的檔案下載回來
rsync -avu -e "ssh -p 22" knuckles@example.com:/home/knuckles/backup/* /share/homes/knuckles/backup/

--------------------------------------------

沒有留言:

張貼留言