|
| 1 | +# DDNS 命令行参数参考 |
| 2 | + |
| 3 | +本文档详细说明DDNS工具的命令行参数用法。命令行参数可用于覆盖配置文件和环境变量中的设置,具有**最高优先级**。 |
| 4 | + |
| 5 | +## 基本用法 |
| 6 | + |
| 7 | +可通过`-h` 查看参数列表 |
| 8 | + |
| 9 | +```bash |
| 10 | +# ddns [选项] |
| 11 | +ddns -h |
| 12 | +``` |
| 13 | + |
| 14 | +或者使用Python源码: |
| 15 | + |
| 16 | +```bash |
| 17 | +# python run.py [选项] |
| 18 | +python run.py -h |
| 19 | +``` |
| 20 | + |
| 21 | +## 参数列表 |
| 22 | + |
| 23 | +| 长参数 | 短参数 | 类型 | 描述 | |
| 24 | +| --------------- | ------ | --------------- | -------------------------------------------- | |
| 25 | +| `--help` | `-h` | 标志 | 显示帮助信息并退出 | |
| 26 | +| `--version` | `-v` | 标志 | 显示版本信息并退出 | |
| 27 | +| `--config` | `-c` | 字符串 | 指定配置文件路径 | |
| 28 | +| `--dns` | | 选择项 | DNS服务提供商 | |
| 29 | +| `--id` | | 字符串 | API 访问 ID 或授权账户 | |
| 30 | +| `--token` | | 字符串 | API 授权令牌或密钥 | |
| 31 | +| `--ipv4` | | 字符串列表 | IPv4 域名列表,多个域名重复使用参数 | |
| 32 | +| `--ipv6` | | 字符串列表 | IPv6 域名列表,多个域名重复使用参数 | |
| 33 | +| `--index4` | | 字符串/数字列表 | IPv4 地址获取方式,支持多种获取方式 | |
| 34 | +| `--index6` | | 字符串/数字列表 | IPv6 地址获取方式,支持多种获取方式 | |
| 35 | +| `--ttl` | | 整数 | DNS 解析记录的 TTL 时间(秒) | |
| 36 | +| `--proxy` | | 字符串列表 | HTTP 代理设置,支持多代理重复使用参数 | |
| 37 | +| `--cache` | | 布尔/字符串 | 是否启用缓存或自定义缓存路径 | |
| 38 | +| `--debug` | | 标志 | 开启调试模式(等同于 --log.level=DEBUG) | |
| 39 | +| `--log.file` | | 字符串 | 日志文件路径,不指定则输出到控制台 | |
| 40 | +| `--log.level` | | 字符串 | 日志级别 | |
| 41 | +| `--log.format` | | 字符串 | 日志格式字符串 | |
| 42 | +| `--log.datefmt` | | 字符串 | 日期时间格式字符串 | |
| 43 | + |
| 44 | +其中`--debug`和`--help`,`--version`为命令行独有参数。 |
| 45 | + |
| 46 | +### 参数值示例 |
| 47 | + |
| 48 | +| 参数 | 可能的值 | 示例 | |
| 49 | +|--------------|----------------------------------------------|----------------------------------------| |
| 50 | +| `--dns` | dnspod, alidns, cloudflare, 等 | `--dns cloudflare` | |
| 51 | +| `--id` | API ID, 邮箱, Access Key | `--id user@example.com` | |
| 52 | +| `--token` | API Token, Secret Key | `--token abcdef123456` | |
| 53 | +| `--ipv4` | 域名 | `--ipv4 example.com --ipv4 sub.example.com` | |
| 54 | +| `--ipv6` | 域名 | `--ipv6 example.com` | |
| 55 | +| `--index4` | 数字, default, public, url:, regex:, cmd:, shell: | `--index4 public`, `--index4 "regex:192\\.168\\..*"` | |
| 56 | +| `--index6` | 数字, default, public, url:, regex:, cmd:, shell: | `--index6 0`, `--index6 public` | |
| 57 | +| `--ttl` | 秒数 | `--ttl 600` | |
| 58 | +| `--proxy` | IP:端口, DIRECT | `--proxy 127.0.0.1:1080 --proxy DIRECT` | |
| 59 | +| `--cache` | true, 文件路径 | `--cache=true`, `--cache=/path/to/cache.json` | |
| 60 | +| `--debug` | (无值) | `--debug` | |
| 61 | +| `--log.file` | 文件路径 | `--log.file=/var/log/ddns.log` | |
| 62 | +| `--log.level`| DEBUG, INFO, WARNING, ERROR, CRITICAL | `--log.level=DEBUG` | |
| 63 | +| `--log.format` | 格式字符串 | `--log.format="%(asctime)s: %(message)s"` | |
| 64 | +| `--log.datefmt` | 日期格式字符串 | `--log.datefmt="%Y-%m-%d %H:%M:%S"` | |
| 65 | + |
| 66 | +## DNS服务配置参数 |
| 67 | + |
| 68 | +### `--dns {alidns,cloudflare,dnscom,dnspod,dnspod_com,he,huaweidns,callback}` |
| 69 | + |
| 70 | +DNS服务提供商。 |
| 71 | + |
| 72 | +- **默认值**: `dnspod` |
| 73 | +- **可选值**: |
| 74 | + - `alidns`: 阿里云DNS |
| 75 | + - `cloudflare`: Cloudflare |
| 76 | + - `dnscom`: DNS.COM |
| 77 | + - `dnspod`: DNSPOD国内版 |
| 78 | + - `dnspod_com`: DNSPOD国际版 |
| 79 | + - `he`: HE.net |
| 80 | + - `huaweidns`: 华为云DNS |
| 81 | + - `callback`: 自定义回调 |
| 82 | + |
| 83 | +### `--id ID` |
| 84 | + |
| 85 | +API访问ID或用户标识。 |
| 86 | + |
| 87 | +- **必需**: 是(部分DNS服务商可选) |
| 88 | +- **说明**: |
| 89 | + - Cloudflare: 填写邮箱地址(使用Token时可留空) |
| 90 | + - HE.net: 可留空 |
| 91 | + - 华为云: 填写Access Key ID (AK) |
| 92 | + - 其他服务商: 根据各自要求填写ID |
| 93 | + |
| 94 | +### `--token TOKEN` |
| 95 | + |
| 96 | +API授权令牌或密钥。 |
| 97 | + |
| 98 | +- **必需**: 是 |
| 99 | +- **说明**: 部分平台称为Secret Key,请妥善保管 |
| 100 | + |
| 101 | +## 域名配置参数 |
| 102 | + |
| 103 | +### `--ipv4 [DOMAIN...]` |
| 104 | + |
| 105 | +需要更新IPv4记录的域名列表。 |
| 106 | + |
| 107 | +- **默认值**: `[]`(不更新IPv4地址) |
| 108 | +- **示例**: |
| 109 | + - `--ipv4 example.com` (单个域名) |
| 110 | + - `--ipv4 example.com --ipv4 subdomain.example.com` (多个域名) |
| 111 | + |
| 112 | +### `--ipv6 [DOMAIN...]` |
| 113 | + |
| 114 | +需要更新IPv6记录的域名列表。 |
| 115 | + |
| 116 | +- **默认值**: `[]`(不更新IPv6地址) |
| 117 | +- **示例**: |
| 118 | + - `--ipv6 example.com` (单个域名) |
| 119 | + - `--ipv6 example.com --ipv6 ipv6.example.com` (多个域名) |
| 120 | + |
| 121 | +## IP获取方式参数 |
| 122 | + |
| 123 | +### `--index4 [METHOD...]` |
| 124 | + |
| 125 | +IPv4地址获取方式。 |
| 126 | + |
| 127 | +- **默认值**: `default` |
| 128 | +- **可选值**: |
| 129 | + - 数字(`0`,`1`,`2`...): 第N个网卡IP |
| 130 | + - `default`: 系统访问外网默认IP |
| 131 | + - `public`: 使用公网IP(通过API查询) |
| 132 | + - `url:{URL}`: 从指定URL获取IP |
| 133 | + - `regex:{PATTERN}`: 使用正则表达式匹配本地网络配置中的IP |
| 134 | + - `cmd:{COMMAND}`: 执行指定命令并使用其输出作为IP |
| 135 | + - `shell:{COMMAND}`: 使用系统shell运行命令并使用其输出作为IP |
| 136 | +- **示例**: |
| 137 | + - `--index4 0` (第一个网卡) |
| 138 | + - `--index4 public` (公网IP) |
| 139 | + - `--index4 "url:http://ip.sb"` (从URL获取) |
| 140 | + - `--index4 "regex:192\\.168\\.*"` (匹配192.168开头的IP) |
| 141 | + - `--index4 public --index4 0` (先尝试获取公网IP,失败则使用第一个网卡) |
| 142 | + |
| 143 | +### `--index6 [METHOD...]` |
| 144 | + |
| 145 | +IPv6地址获取方式,用法同`--index4`。 |
| 146 | + |
| 147 | +## 网络配置参数 |
| 148 | + |
| 149 | +### `--ttl TTL` |
| 150 | + |
| 151 | +DNS解析TTL时间(秒)。 |
| 152 | + |
| 153 | +- **默认值**: `null`(使用DNS服务商默认设置) |
| 154 | +- **示例**: |
| 155 | + - `--ttl 600` (10分钟) |
| 156 | + - `--ttl 3600` (1小时) |
| 157 | + |
| 158 | +### `--proxy [PROXY...]` |
| 159 | + |
| 160 | +HTTP代理设置,支持多代理轮换。 |
| 161 | + |
| 162 | +- **默认值**: 无(DIRECT 直连) |
| 163 | +- **示例**: |
| 164 | + - `--proxy 127.0.0.1:1080` (单个代理) |
| 165 | + - `--proxy 127.0.0.1:1080 --proxy DIRECT` (多个代理,逐个尝试) |
| 166 | + |
| 167 | +## 系统配置参数 |
| 168 | + |
| 169 | +### `--cache [BOOL|PATH]` |
| 170 | + |
| 171 | +启用缓存以减少API请求。 |
| 172 | + |
| 173 | +- **默认值**: `true` |
| 174 | +- **可选值**: |
| 175 | + - `true`: 启用缓存,使用默认路径 |
| 176 | + - `false`: 禁用缓存 |
| 177 | + - 文件路径: 自定义缓存文件位置 |
| 178 | +- **示例**: |
| 179 | + - `--cache` (启用默认缓存) |
| 180 | + - `--cache=false` (禁用缓存) |
| 181 | + - `--cache=/path/to/ddns.cache` (自定义缓存路径) |
| 182 | + |
| 183 | +### `--debug` |
| 184 | + |
| 185 | +启用调试模式(等同于设置`--log.level=DEBUG`)。 |
| 186 | + |
| 187 | +- **说明**: 此参数仅作为命令行参数有效,配置文件中的同名设置无效 |
| 188 | +- **示例**: `--debug` |
| 189 | + |
| 190 | +## 日志配置参数 |
| 191 | + |
| 192 | +### `--log.level {CRITICAL|FATAL|ERROR|WARN|WARNING|INFO|DEBUG|NOTSET}` |
| 193 | + |
| 194 | +设置日志级别。 |
| 195 | + |
| 196 | +- **默认值**: `INFO` |
| 197 | +- **示例**: |
| 198 | + - `--log.level=DEBUG` (调试模式) |
| 199 | + - `--log.level=ERROR` (仅显示错误) |
| 200 | + |
| 201 | +### `--log.file LOGFILE` |
| 202 | + |
| 203 | +设置日志文件路径。 |
| 204 | + |
| 205 | +- **默认值**: 无(输出到控制台) |
| 206 | +- **示例**: |
| 207 | + - `--log.file=/var/log/ddns.log` |
| 208 | + - `--log.file=./ddns.log` |
| 209 | + |
| 210 | +### `--log.format FORMAT` |
| 211 | + |
| 212 | +设置日志格式字符串(参考Python logging模块格式)。 |
| 213 | + |
| 214 | +- **默认值**: `%(asctime)s %(levelname)s [%(module)s]: %(message)s` |
| 215 | +- **示例**: |
| 216 | + - `--log.format="%(asctime)s %(levelname)s: %(message)s"` |
| 217 | + - `--log.format="%(levelname)s [%(filename)s:%(lineno)d]: %(message)s"` |
| 218 | + |
| 219 | +### `--log.datefmt FORMAT` |
| 220 | + |
| 221 | +设置日期时间格式字符串(参考Python time.strftime()格式)。 |
| 222 | + |
| 223 | +- **默认值**: `%Y-%m-%dT%H:%M:%S` |
| 224 | +- **示例**: |
| 225 | + - `--log.datefmt="%Y-%m-%d %H:%M:%S"` |
| 226 | + - `--log.datefmt="%m-%d %H:%M:%S"` |
| 227 | + |
| 228 | +## 常用命令示例 |
| 229 | + |
| 230 | +### 使用配置文件 |
| 231 | + |
| 232 | +```bash |
| 233 | +# 使用默认配置文件 |
| 234 | +ddns |
| 235 | + |
| 236 | +# 使用指定配置文件 |
| 237 | +ddns -c /path/to/config.json |
| 238 | +``` |
| 239 | + |
| 240 | +### 命令行临时修改配置 |
| 241 | + |
| 242 | +```bash |
| 243 | +# 启用调试模式 |
| 244 | +ddns --debug |
| 245 | + |
| 246 | +# 使用指定配置文件并启用调试模式 |
| 247 | +ddns -c /path/to/config.json --debug |
| 248 | + |
| 249 | +# 更新特定域名的IPv4地址(多个域名) |
| 250 | +ddns --ipv4 example.com --ipv4 www.example.com |
| 251 | + |
| 252 | +# 设置为阿里云DNS并提供认证信息 |
| 253 | +ddns --dns alidns --id YOUR_ACCESS_KEY_ID --token YOUR_ACCESS_KEY_SECRET |
| 254 | +``` |
| 255 | + |
| 256 | +### 高级用法示例 |
| 257 | + |
| 258 | +```bash |
| 259 | +# 使用公网IP和特定的网络配置 |
| 260 | +ddns --ipv4 example.com --index4 public --ttl 600 --proxy 127.0.0.1:1080 |
| 261 | + |
| 262 | +# 自定义日志配置 |
| 263 | +ddns --log.level=DEBUG --log.file=./ddns.log --log.format="%(asctime)s - %(levelname)s: %(message)s" |
| 264 | + |
| 265 | +# 完整配置示例 |
| 266 | +ddns --dns cloudflare --id user@example.com --token API_TOKEN \ |
| 267 | + --ipv4 example.com --ipv4 www.example.com --ipv6 example.com \ |
| 268 | + --index4 public --index6 "regex:2001:.*" \ |
| 269 | + --ttl 300 --proxy 127.0.0.1:1080 --proxy DIRECT \ |
| 270 | + --cache=/var/cache/ddns.cache \ |
| 271 | + --log.level=INFO --log.file=/var/log/ddns.log |
| 272 | +``` |
| 273 | + |
| 274 | +## 注意事项 |
| 275 | + |
| 276 | +1. 命令行参数具有最高优先级,会覆盖配置文件和环境变量中的设置。 |
| 277 | +2. 对于需要空格的参数值,请使用引号包围,例如:`--log.format="%(asctime)s: %(message)s"`。 |
| 278 | +3. 对于多值参数(如`--ipv4`、`--index4`、`--proxy`等),请重复使用参数标识,例如:`--ipv4 example.com --ipv4 sub.example.com`。 |
| 279 | +4. `--debug`参数仅在命令行中有效,配置文件中的debug设置将被忽略。 |
0 commit comments