最近需要讓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/
--------------------------------------------