Skip to content

CLI 层(cmd/crtsh-cli/)

CLI 用 cobra 把 SDK 方法包装成人类可读命令。设计目标:脚本友好、输出可管道、参数直觉。

cmd/crtsh-cli 26 命令 JSON/表格/CSV

根命令与全局 flag

bash
crtsh-cli [--timeout 30s] [--debug] [--output json|table|csv] command [flags]
  • --timeout:覆盖默认 30s
  • --debug:打印 crt.sh 请求/响应原文
  • --output / -ojson(机读)、table(人读,默认)、csv(Excel/管道)

命令的三种角色

flowchart LR subgraph 查询["查询类(→ SDK 方法)"] S1[search] S2[get-cert] S3[get-asn1] end subgraph 列举["列举类(→ registry 辅助函数)"] L1[list-types] L2[list-linters] L3[list-match-modes] end subgraph 输出["输出格式化"] F1[JSON] F2[表格] F3[CSV] end 查询 --> 输出 列举 --> 输出

26 条命令

查询类(对应 SDK 方法):searchexport-jsonexport-csvexport-atomget-certget-ct-entryatom-feedget-raw-certgen-add-chainget-asn1get-hierarchyget-graphget-pvadvanced-search-pagecert-populationsinfo-pageget-caissuer-certificatescensys

列举类(对应 registry):list-typeslist-pageslist-linterslist-match-modeslist-lint-typeslist-group-modeslist-cert-population-groupslist-sort-directions

搜索显示 flag

search 命令特有的:

  • --issuer-ca-id id:按 issuer CA ID 过滤
  • --group none|icaid:结果分组
  • --sort <列号> + --dir ^|v:排序方向

一条命令的内部流程

flowchart TD P[cobra 解析 flag] --> M[映射到 QueryParams] M --> SDK["client.SearchCertificates(ctx, params)"] SDK --> O{--output} O -->|json| J[json.Marshal] O -->|csv| C[csv.Writer] O -->|table| T[tabwriter] J --> STDOUT C --> STDOUT T --> STDOUT

CLI 的命令处理函数与 MCP 工具处理函数一样,只做"flag→params→SDK→格式化",不含业务逻辑。这就是为什么加一个能力四层能快速同步。

最后一层:Skills 层