使用 flarectl 命令行工具管理 Cloudflare DNS 记录,包括列出、添加、更新、删除 DNS 记录,以及查询 Zone 信息。当用户提到"Cloudflare DNS"、"CF DNS"、"添加 DNS 记录"、"删除 DNS 记录"、"更新 DNS"、"查看 DNS 记录"、"cloudflare-dns"、"flarectl",或任何涉及 Cloudflare DNS 管理的场景,必须触发本技能。
当前环境(Alpine Linux arm64)可直接使用预装版本。若不存在则从 Release 安装:
if ! which flarectl > /dev/null 2>&1; then
wget -q https://github.com/wsvn53/flarectl/releases/download/flarectl-v0.1.0-alpine-arm64/flarectl-linux-arm64 \
-O /usr/local/bin/flarectl && chmod +x /usr/local/bin/flarectl
fi
flarectl 支持两种认证方式(优先使用 API Token):
方式一:API Token(推荐)
export CF_API_TOKEN=<your_token>
方式二:Global API Key
export CF_API_KEY=<your_key>
export CF_API_EMAIL=<your_email>
可选:
export CF_ACCOUNT_ID=<account_id> # 多账号时指定
检查环境变量是否已设置:
[ -n "$CF_API_TOKEN" ] && echo "Token: set" || echo "Token: NOT SET"
[ -n "$CF_API_KEY" ] && echo "API Key: set" || echo "API Key: NOT SET"
若未设置,告知用户需要的变量名并提供设置链接:
flarectl zone list
输出示例:
ID NAME PLAN STATUS
abc123... example.com Free active
# 列出某域名所有记录
flarectl dns list --zone example.com
# 按类型过滤
flarectl dns list --zone example.com --type A
# 按名称过滤
flarectl dns list --zone example.com --name sub.example.com
# JSON 格式输出(便于解析 ID)
flarectl --json dns list --zone example.com
# A 记录
flarectl dns create --zone example.com --type A --name sub.example.com --content 1.2.3.4 --ttl 1
# CNAME 记录(开启橙云代理)
flarectl dns create --zone example.com --type CNAME --name www.example.com --content example.com --proxy
# MX 记录
flarectl dns create --zone example.com --type MX --name example.com --content mail.example.com --priority 10
# TXT 记录
flarectl dns create --zone example.com --type TXT --name _dmarc.example.com --content "v=DMARC1; p=none"
# AAAA 记录(IPv6)
flarectl dns create --zone example.com --type AAAA --name ipv6.example.com --content "2001:db8::1"
参数说明:
--ttl 1:自动 TTL(推荐);其他值单位为秒(如 --ttl 300)--proxy:开启 Cloudflare 橙云代理(仅 A/AAAA/CNAME 支持)更新需要记录的 id,先用 dns list 获取:
# 获取记录 ID
flarectl --json dns list --zone example.com --name sub.example.com | python3 -c "
import sys,json
for r in json.load(sys.stdin):
print(r['id'], r['type'], r['name'], r['content'])
"
# 更新内容
flarectl dns update --zone example.com --id <record_id> --content 5.6.7.8
# 更新并开启代理
flarectl dns update --zone example.com --id <record_id> --content 5.6.7.8 --proxy
# 存在则更新,不存在则创建
flarectl dns create-or-update --zone example.com --type A --name sub.example.com --content 1.2.3.4
# 先查出 ID
flarectl --json dns list --zone example.com --name sub.example.com | python3 -c "
import sys,json
for r in json.load(sys.stdin):
print(r['id'], r['name'], r['type'])
"
# 删除
flarectl dns delete --zone example.com --id <record_id>
flarectl --json dns list --zone example.com --name sub.example.com | python3 -c "
import sys,json,subprocess
for r in json.load(sys.stdin):
subprocess.run(['flarectl','dns','delete','--zone','example.com','--id',r['id']])
print('Deleted:', r['id'], r['type'], r['content'])
"
CF_API_TOKEN 或 CF_API_KEY+CF_API_EMAIL 是否已设置flarectl zone list 列出可用域名让用户选择flarectl dns list --zone <zone> 展示最新记录状态--proxy 仅支持 A、AAAA、CNAME 记录类型--priorityflarectl --json 全局 flag 必须放在子命令之前