Skip to main content

Cloudflare 批次刪除 DNS 記錄

  BUBU 因為想要把公司 DNS 服務轉移到 Cloudflare 來服務,但是匯入資料時不小心啟用 proxy 功能,想說要重新匯入但是要先清空記錄,但 DNS 記錄有約有三百多條一個一個刪太慢了只能利用 API 方式進行刪除。

簡單說明


  • 首先到 cloudflare 後台申請 API 服務

  • 到您要設定的 DNS 網域名稱下面有一欄 API 項目,按下紅色框框的連結

cf-api-06.png

  • 進入後選擇建立 Token

cf-api-01.png

  • 進入後再選擇 Edit zone DNS 樣版

cf-api-02.png

  • Zone Resources 選擇您要設定的網域名稱

cf-api-03.png

  • 下一步會讓您確認,沒有問題可以建立 Token

cf-api-04.png

  • 系統會產出一組 key 複製下來,下面是範例可以參考及測試

cf-api-05.png

  • 利用 bash 方式進行刪除 vim cfdnsdel.sh
#!/bin/bash

# 輸入您剛剛申請的 key
TOKEN="xxxxxxxxxxxxxxxxxxx"

# 回到 DNS 頁面的 API 欄位有一個 zone ID 您再把這個複製下來到這裡
ZONE_ID=2222222222222222222222222

# [email protected]
# KEY=11111111111111111111111111
# Replace with 
#     -H "X-Auth-Email: ${EMAIL}" \
#     -H "X-Auth-Key: ${KEY}" \
# for old API keys
 

curl -s -X GET https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records?per_page=500 \
    -H "Authorization: Bearer ${TOKEN}" \
    -H "Content-Type: application/json" | jq .result[].id |  tr -d '"' | (
  while read id; do
    curl -s -X DELETE https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records/${id} \
      -H "Authorization: Bearer ${TOKEN}" \
      -H "Content-Type: application/json"
  done
  )
  • 但在執行前要先安裝套件叫 jq 的
apt install -y jq
  • 讓該腳本有執行權限
chmod +x cfdnsdel.sh
  • 執行後所出現的畫面

cf-api-07.png

  • 執行完之後再回後台查看是否已清除了。

備註





參考相關網頁