尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Trivy `plugin run` 命令完全指南:按需安装并运行插件的实战解析

发布时间:2026/9/10 12:20:57

资讯中心
01
ARTICLE

Trivy `plugin run` 命令完全指南:按需安装并运行插件的实战解析

Trivy `plugin run` 命令完全指南:按需安装并运行插件的实战解析
Trivyplugin run命令完全指南按需安装并运行插件的实战解析【免费下载链接】trivyFind vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more项目地址: https://gitcode.com/GitHub_Trending/tr/trivyTrivy 的trivy plugin run子命令用于按需运行Run a plugin on the fly插件只需一条命令即可完成插件的下载、安装与执行无需事先执行trivy plugin install。本指南以 trivy_plugin_run.md 为核心骨架结合 pkg/plugin/manager.go、pkg/plugin/plugin.go 与 pkg/commands/app.go 等源码详细讲解该命令的语法、参数、执行流程与底层实现原理帮助读者在实际扫描场景中灵活运用。命令总览与语法trivy plugin run的完整语法为trivy plugin run NAME | URL | FILE_PATHNAME已注册在插件索引中的插件名例如kubectl、referrer、countURL插件源码或归档的远程地址例如 Git 仓库地址、HTTP/HTTPS 下载链接、S3 或 GCS 对象存储链接FILE_PATH本地插件包路径例如./myplugin.tar.gz。该命令还支持别名r因此trivy plugin run与trivy plugin r等价见 pkg/commands/app.go 中Aliases: []string{r}的定义。从源码定义看run子命令要求至少一个位置参数cobra.MinimumNArgs(1)其中args[0]作为插件来源名称/URL/文件路径args[1:]全部透传给插件本体作为插件的参数。RunE: func(cmd *cobra.Command, args []string) error { return manager.Run(cmd.Context(), args[0], plugin.Options{ Args: args[1:], Insecure: pluginOptions.Insecure, }) },这一点非常关键run后面的所有内容第一个 token 被 Trivy 用来定位插件其余全部原样交给插件进程处理。选项Options本命令专属选项run子命令本身只暴露一个帮助选项-h, --help help for run继承自父命令的全局选项与 Trivy 其他子命令一致trivy plugin run同样继承全局选项实际生效值以配置为准--cacert string Path to PEM-encoded CA certificate file --cache-dir string cache directory (default /path/to/cache) -c, --config string config path (default trivy.yaml) -d, --debug debug mode --generate-default-config write the default config to trivy-default.yaml --insecure allow insecure server connections -q, --quiet suppress progress bar and log output --timeout duration timeout (default 5m0s) -v, --version show version其中与插件运行直接相关的有两个--insecure允许不安全的服务器连接。在 pkg/commands/app.go 中该选项被直接注入plugin.Options.Insecure进而传递给下载器downloader.Options{Insecure: opts.Insecure}见 pkg/plugin/manager.go。当插件仓库或执行文件托管在自签名 TLS 证书的私有服务器上时需要开启此选项。--debug输出调试日志。下载插件、加载元数据、选择平台、下载执行文件等关键步骤均带有DebugContext日志见 pkg/plugin/manager.go 与 pkg/plugin/plugin.go排查安装失败时非常有用。支持的插件来源类型run与install共享同一套下载逻辑。从源码看插件的获取经由downloader.DownloadToTempDir见 pkg/plugin/manager.go底层基于 go-getter因此支持以下协议见 docs/guide/plugin/user-guide.mdOCI 镜像仓库OCI Registries本地文件Local FilesGit 仓库GitHTTP/HTTPSMercurialAmazon S3Google Cloud Storage例如# 通过索引名 trivy plugin run kubectl # 通过 Git 仓库 trivy plugin run github.com/aquasecurity/trivy-plugin-kubectl # 通过 HTTP 下载的归档 trivy plugin run https://github.com/aquasecurity/trivy-plugin-kubectl/archive/refs/heads/main.zip # 通过本地文件 trivy plugin run ./myplugin.tar.gz对于托管在 Git 仓库且正确打了v前缀语义化版本标签的插件还可以指定版本号trivy plugin run referrerv0.3.0这一vversion语法在 pkg/plugin/manager.go 的parseArg中实现先用strings.Cut(arg, v)切分再用 semver 校验版本合法性只有版本号符合语义化版本规范时才按版本安装否则整个字符串被当作普通来源处理最终转换为name?refvversion形式传给 go-getter。按需运行的工作流程与底层实现trivy plugin run的核心逻辑是Manager.Run见 pkg/plugin/manager.gofunc (m *Manager) Run(ctx context.Context, name string, opts Options) error { plugin, err : m.Install(ctx, name, opts) if err ! nil { return xerrors.Errorf(plugin install error: %w, err) } if err plugin.Run(ctx, opts); err ! nil { return xerrors.Errorf(unable to run %s plugin: %w, plugin.Name, err) } return nil }整个流程分三步安装Install调用Manager.Install定位插件来源去重检查isInstalledInstall内部会先检查插件是否已安装。若插件已存在于插件缓存中直接跳过下载安装步骤仅打印The plugin is already installed日志见 pkg/plugin/manager.go。判断依据是plugin.Repository url (version || plugin.Version version)见 pkg/plugin/manager.go即同一仓库来源且未指定版本或版本一致视为已安装执行Run调用plugin.Run(ctx, opts)真正启动插件进程。安装细节在install阶段见 pkg/plugin/manager.go将来源下载到临时目录DownloadToTempDir若归档内仅含一个目录如 GitHub 分支归档自动进入该子目录打开plugin.yaml读取插件元数据decodeMetadata要求name字段非空将插件复制到插件根目录默认~/.trivy/plugins下的plugin-name子目录并把plugin.yaml一并写入依据平台选择逻辑下载执行文件。执行细节Plugin.Run见 pkg/plugin/plugin.go通过exec.CommandContext启动插件二进制并将参数opts.Args原样传入标准输入/输出/错误重定向到 Trivy 自身进程环境变量继承自 Trivy 进程cmd.Env os.Environ()。若插件进程以非零状态退出Trivy 会将退出码转换为types.ExitError传递出去从而保留插件自身的退出码语义例如--exit-code 1这类由插件解析的参数依然有效。平台选择规则在执行前Trivy 会根据当前GOOS/GOARCH与plugin.yaml中platforms列表匹配执行文件见 pkg/plugin/plugin.go若selector为空未指定直接使用该平台若os、arch均匹配当前平台命中若os匹配且未限定更具体的arch也命中若无任何匹配返回platform not found错误并退出。匹配失败时提示与插件自身无关属于 manifest 平台声明缺失问题需在插件仓库的plugin.yaml中补充对应平台的selector。典型使用示例在 docs/guide/plugin/user-guide.md 中给出了按需运行的标准用法trivy plugin run kubectl pod your-pod -- --exit-code 1这里kubectl被安装并立即执行pod your-pod -- --exit-code 1被透传给插件。--之后的部分在多数插件约定中用于分隔 Trivy 自身参数与扫描参数。再例如运行输出类插件counttrivy plugin run count --published-after 2023-10-01该插件用于统计扫描结果数量接收透传参数--published-after。由于run与install复用同一安装逻辑也可以直接指定 URLtrivy plugin run github.com/aquasecurity/trivy-plugin-kubectl与install 直接调用的对比trivy plugin run与先install再以子命令调用两种方式在效果上等价但适用场景不同场景推荐方式说明一次性使用、不想污染插件缓存trivy plugin run name虽然run也会写入缓存但免去手动两步操作频繁使用trivy plugin install name后直接trivy name安装后插件会以子命令形式出现在trivy --help的 Plugin Commands 中省略子命令前缀设置环境变量TRIVY_RUN_AS_PLUGINname见 docs/guide/plugin/user-guide.md另外插件缓存目录遵循 XDG 规范查找顺序为XDG_DATA_HOME下存在.trivy/plugins时优先否则回退到~/.trivy/plugins见 pkg/plugin/manager.go 中dir()的实现。相关命令trivy plugin run是 Trivy 插件管理命令族的一员与之配套的命令还有trivy plugin install安装插件run的内部第一步即调用同一安装逻辑trivy plugin list列出已安装插件trivy plugin info查看指定插件的详细信息trivy plugin search在插件索引中检索可用插件trivy plugin update更新本地插件索引副本trivy plugin upgrade升级已安装插件trivy plugin uninstall卸载插件。各子命令的 CLI 参考文档位于 docs/guide/references/configuration/cli 目录完整的插件用户指南见 docs/guide/plugin/user-guide.md插件开发与plugin.yaml清单格式说明见 docs/guide/plugin/developer-guide.md。小结trivy plugin run将安装 运行合并为一步是临时使用 Trivy 插件最快捷的方式。理解其来源解析 → 缓存去重 → 平台选择 → 进程执行的完整链路对应 pkg/plugin/manager.go 与 pkg/plugin/plugin.go有助于排查安装失败、平台不匹配等问题也能让你更熟练地组合--insecure、--debug等全局选项在私有环境与 CI 流水线中安全高效地扩展 Trivy 的能力。【免费下载链接】trivyFind vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more项目地址: https://gitcode.com/GitHub_Trending/tr/trivy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。