cli-anything-adguardhome 是一个用于 AdGuard Home 的命令行界面工具,通过 AdGuard Home REST API 提供全网广告拦截和 DNS 管理能力。它面向 AI 智能体和高级用户,使其无需图形界面即可管理过滤规则、DNS 重写、客户端、DHCP 和查询日志。
安装
该 CLI 作为 cli-anything-adguardhome 包的一部分安装:
pip install cli-anything-adguardhome
前置条件:
- Python 3.10+
- AdGuard Home 必须已安装并运行
- 安装 AdGuard Home:
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
使用方式
基本命令:
# 显示帮助
cli-anything-adguardhome --help
# 启动交互式 REPL 模式
cli-anything-adguardhome
# 检查服务器状态
cli-anything-adguardhome server status
# 以 JSON 输出运行(供智能体使用)
cli-anything-adguardhome --json server status
REPL 模式:不带子命令调用时,CLI 进入交互式 REPL 会话,支持 Tab 补全和历史记录。
命令组
Config(配置)
连接与配置管理。
- show:显示当前连接配置
- save:将连接设置保存到配置文件
- test:测试与 AdGuard Home 的连接
Server(服务器)
服务器状态与控制命令。
- status:显示服务器保护状态
- version:显示 AdGuard Home 版本
- restart:重启 AdGuard Home 服务器
Filter(过滤器)
DNS 过滤列表管理。
- list:列出所有已配置的过滤列表
- status:显示过滤状态
- toggle:全局启用或禁用过滤
- add:通过 URL 添加新的过滤列表
- remove:移除过滤列表
- enable:启用特定过滤列表
- disable:禁用特定过滤列表
- refresh:强制刷新所有过滤列表
Blocking(拦截)
家长控制、安全浏览和安全搜索设置。
- parental status / parental enable / parental disable:家长控制状态、启用、禁用
- safebrowsing status / safebrowsing enable / safebrowsing disable:安全浏览状态、启用、禁用
- safesearch status / safesearch enable / safesearch disable:安全搜索状态、启用、禁用
Blocked-Services(被屏蔽服务)
管理被屏蔽的互联网服务。
- list:列出当前被屏蔽的服务
- set:设置被屏蔽服务列表
Clients(客户端)
客户端设备管理。
- list:列出所有已配置的客户端
- add:按名称和 IP 添加新客户端
- remove:移除客户端
- show:显示特定客户端的详细信息
Stats(统计)
查询统计。
- show:显示 DNS 查询统计
- reset:重置所有统计
- config:查看或更新统计保留间隔
Log(日志)
DNS 查询日志管理。
- show:显示最近的 DNS 查询日志条目
- config:查看或更新查询日志设置
- clear:清除查询日志
Rewrite(重写)
DNS 重写规则。
- list:列出所有 DNS 重写规则
- add:添加 DNS 重写规则
- remove:移除 DNS 重写规则
DHCP
DHCP 服务器管理。
- status:显示 DHCP 服务器状态
- leases:列出活动 DHCP 租约
- add-static:添加静态 DHCP 租约
- remove-static:移除静态 DHCP 租约
TLS
TLS/HTTPS 配置。
- status:显示 TLS 配置状态
示例
检查服务器状态:
cli-anything-adguardhome server status
cli-anything-adguardhome server version
管理过滤列表:
# 列出当前过滤器
cli-anything-adguardhome filter list
# 添加新的拦截列表
cli-anything-adguardhome filter add --url https://somehost.com/list.txt --name "My List"
# 刷新所有过滤器
cli-anything-adguardhome filter refresh
DNS 重写:
# 添加本地 DNS 条目
cli-anything-adguardhome rewrite add --domain "myserver.local" --answer "192.168.1.50"
# 列出所有重写
cli-anything-adguardhome rewrite list
客户端管理:
cli-anything-adguardhome clients add --name "My PC" --ip 192.168.1.100
cli-anything-adguardhome clients list
查询统计:
# 显示统计(人类可读)
cli-anything-adguardhome stats show
# 显示统计(JSON,供智能体使用)
cli-anything-adguardhome --json stats show
输出格式
所有命令支持双输出模式:
- 人类可读(默认):表格、颜色、格式化文本
- 机器可读(--json 标志):结构化 JSON,供智能体使用
# 人类输出
cli-anything-adguardhome filter list
# 供智能体使用的 JSON 输出
cli-anything-adguardhome --json filter list
面向 AI 智能体
以编程方式使用此 CLI 时:
- 始终使用 --json 标志以获得可解析的输出
- 检查返回码——0 表示成功,非零表示错误
- 失败时解析 stderr 获取错误消息
- 所有文件操作使用绝对路径
- 在执行其他命令前先用 config test 测试连接
更多信息
- 完整文档:参见包中的 README.md
- 测试覆盖:参见包中的 TEST.md
- 方法论:参见 cli-anything-plugin 中的 HARNESS.md
版本:1.0.0