本文档详细说明DDNS工具的命令行参数用法。命令行参数可用于覆盖配置文件和环境变量中的设置,具有最高优先级。
可通过-h 查看参数列表
# ddns [选项]
ddns -h
或者使用Python源码:
# python run.py [选项]
python run.py -h
| 长参数 | 短参数 | 类型 | 描述 |
|---|---|---|---|
--help |
-h |
标志 | 显示帮助信息并退出 |
--version |
-v |
标志 | 显示版本信息并退出 |
--config |
-c |
字符串 | 指定配置文件路径 |
--dns |
选择项 | DNS服务提供商 | |
--id |
字符串 | API 访问 ID 或授权账户 | |
--token |
字符串 | API 授权令牌或密钥 | |
--ipv4 |
字符串列表 | IPv4 域名列表,多个域名重复使用参数 | |
--ipv6 |
字符串列表 | IPv6 域名列表,多个域名重复使用参数 | |
--index4 |
字符串/数字列表 | IPv4 地址获取方式,支持多种获取方式 | |
--index6 |
字符串/数字列表 | IPv6 地址获取方式,支持多种获取方式 | |
--ttl |
整数 | DNS 解析记录的 TTL 时间(秒) | |
--line |
字符串 | DNS 解析线路,ISP线路选择 | |
--proxy |
字符串列表 | HTTP 代理设置,支持多代理重复使用参数 | |
--cache |
布尔/字符串 | 是否启用缓存或自定义缓存路径 | |
--ssl |
字符串 | SSL证书验证方式 | |
--debug |
标志 | 开启调试模式(等同于 --log.level=DEBUG) | |
--log.file |
字符串 | 日志文件路径,不指定则输出到控制台 | |
--log.level |
字符串 | 日志级别 | |
--log.format |
字符串 | 日志格式字符串 | |
--log.datefmt |
字符串 | 日期时间格式字符串 |
其中--debug和--help,--version为命令行独有参数。
| 参数 | 可能的值 | 示例 |
|---|---|---|
--dns |
dnspod, alidns, cloudflare, 等 | --dns cloudflare |
--id |
API ID, 邮箱, Access Key | --id [email protected] |
--token |
API Token, Secret Key | --token abcdef123456 |
--ipv4 |
域名 | --ipv4 example.com --ipv4 sub.example.com |
--ipv6 |
域名 | --ipv6 example.com |
--index4 |
数字, default, public, url:, regex:, cmd:, shell: | --index4 public, --index4 "regex:192\\.168\\..*" |
--index6 |
数字, default, public, url:, regex:, cmd:, shell: | --index6 0, --index6 public |
--ttl |
秒数 | --ttl 600 |
--line |
线路名称 | --line 电信, --line telecom |
--proxy |
IP:端口, DIRECT | --proxy 127.0.0.1:1080 --proxy DIRECT |
--cache |
true, 文件路径 | --cache=true, --cache=/path/to/cache.json |
--ssl |
true, false, auto, 文件路径 | --ssl false, --ssl /path/to/cert.pem |
--debug |
(无值) | --debug |
--log.file |
文件路径 | --log.file=/var/log/ddns.log |
--log.level |
DEBUG, INFO, WARNING, ERROR, CRITICAL | --log.level=DEBUG |
--log.format |
格式字符串 | --log.format="%(asctime)s: %(message)s" |
--log.datefmt |
日期格式字符串 | --log.datefmt="%Y-%m-%d %H:%M:%S" |
--dns {alidns,cloudflare,dnscom,dnspod,dnspod_com,he,huaweidns,callback}DNS服务提供商。
dnspodalidns: 阿里云DNScloudflare: Cloudflarednscom: DNS.COMdnspod: DNSPOD国内版dnspod_com: DNSPOD国际版he: HE.nethuaweidns: 华为云DNScallback: 自定义回调--id IDAPI访问ID或用户标识。
--token TOKENAPI授权令牌或密钥。
Callback配置示例:
# GET方式回调
ddns --dns callback --id "https://api.example.com/ddns?domain=__DOMAIN__&ip=__IP__" --token ""
# POST方式回调
ddns --dns callback --id "https://api.example.com/ddns" --token '{"api_key": "your_key", "domain": "__DOMAIN__"}'
详细配置请参考:Callback Provider 配置文档
--ipv4 [DOMAIN...]需要更新IPv4记录的域名列表。
[](不更新IPv4地址)--ipv4 example.com (单个域名)--ipv4 example.com --ipv4 subdomain.example.com (多个域名)--ipv6 [DOMAIN...]需要更新IPv6记录的域名列表。
[](不更新IPv6地址)--ipv6 example.com (单个域名)--ipv6 example.com --ipv6 ipv6.example.com (多个域名)--index4 [METHOD...]IPv4地址获取方式。
default0,1,2...): 第N个网卡IPdefault: 系统访问外网默认IPpublic: 使用公网IP(通过API查询)url:{URL}: 从指定URL获取IPregex:{PATTERN}: 使用正则表达式匹配本地网络配置中的IPcmd:{COMMAND}: 执行指定命令并使用其输出作为IPshell:{COMMAND}: 使用系统shell运行命令并使用其输出作为IP--index4 0 (第一个网卡)--index4 public (公网IP)--index4 "url:http://ip.sb" (从URL获取)--index4 "regex:192\\.168\\.*" (匹配192.168开头的IP)--index4 public --index4 0 (先尝试获取公网IP,失败则使用第一个网卡)--index6 [METHOD...]IPv6地址获取方式,用法同--index4。
--ttl TTLDNS解析TTL时间(秒)。
null(使用DNS服务商默认设置)--ttl 600 (10分钟)--ttl 3600 (1小时)--proxy [PROXY...]HTTP代理设置,支持多代理轮换。
--proxy 127.0.0.1:1080 (单个代理)--proxy 127.0.0.1:1080 --proxy DIRECT (多个代理,逐个尝试)--cache [BOOL|PATH]启用缓存以减少API请求。
truetrue: 启用缓存,使用默认路径false: 禁用缓存--cache (启用默认缓存)--cache=false (禁用缓存)--cache=/path/to/ddns.cache (自定义缓存路径)--ssl {true|false|auto|PATH}SSL证书验证方式,控制HTTPS连接的证书验证行为。
autotrue: 强制验证SSL证书(最安全)false: 禁用SSL证书验证(最不安全)auto: 优先验证,SSL证书错误时自动降级(不安全)--ssl true (强制验证)--ssl false (禁用验证)--ssl auto (自动降级)--ssl /etc/ssl/certs/ca-certificates.crt (自定义CA证书)--debug启用调试模式(等同于设置--log.level=DEBUG)。
--debug--log.level {CRITICAL|FATAL|ERROR|WARN|WARNING|INFO|DEBUG|NOTSET}设置日志级别。
INFO--log.level=DEBUG (调试模式)--log.level=ERROR (仅显示错误)--log.file LOGFILE设置日志文件路径。
--log.file=/var/log/ddns.log--log.file=./ddns.log--log.format FORMAT设置日志格式字符串(参考Python logging模块格式)。
%(asctime)s %(levelname)s [%(module)s]: %(message)s--log.format="%(asctime)s %(levelname)s: %(message)s"--log.format="%(levelname)s [%(filename)s:%(lineno)d]: %(message)s"--log.datefmt FORMAT设置日期时间格式字符串(参考Python time.strftime()格式)。
%Y-%m-%dT%H:%M:%S--log.datefmt="%Y-%m-%d %H:%M:%S"--log.datefmt="%m-%d %H:%M:%S"# 使用默认配置文件
ddns
# 使用指定配置文件
ddns -c /path/to/config.json
# 启用调试模式
ddns --debug
# 使用指定配置文件并启用调试模式
ddns -c /path/to/config.json --debug
# 更新特定域名的IPv4地址(多个域名)
ddns --ipv4 example.com --ipv4 www.example.com
# 设置为阿里云DNS并提供认证信息
ddns --dns alidns --id YOUR_ACCESS_KEY_ID --token YOUR_ACCESS_KEY_SECRET
# 使用公网IP和特定的网络配置
ddns --ipv4 example.com --index4 public --ttl 600 --proxy 127.0.0.1:1080
# 自定义日志配置
ddns --log.level=DEBUG --log.file=./ddns.log --log.format="%(asctime)s - %(levelname)s: %(message)s"
# 完整配置示例
ddns --dns cloudflare --id [email protected] --token API_TOKEN \
--ipv4 example.com --ipv4 www.example.com --ipv6 example.com \
--index4 public --index6 "regex:2001:.*" \
--ttl 300 --proxy 127.0.0.1:1080 --proxy DIRECT \
--cache=/var/cache/ddns.cache \
--log.level=INFO --log.file=/var/log/ddns.log
--log.format="%(asctime)s: %(message)s"。--ipv4、--index4、--proxy等),请重复使用参数标识,例如:--ipv4 example.com --ipv4 sub.example.com。--debug参数仅在命令行中有效,配置文件中的debug设置将被忽略。