You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jq将Vault证书请求响应拆分至两个文件?

拆分Vault PKI证书请求响应到不同文件的正确方法

你可以通过以下两种方式实现需求,一次请求Vault即可完成拆分,避免重复调用:

方法1:单次jq调用同时生成两个文件

这种方式最高效,只需要向Vault发起一次请求,通过jq内部的输出逻辑直接写入两个文件:

vault write -format=json pki_int/issue/example-dot-com \
  common_name="test.example.com" \
  ttl="24h" \
  format=pem | jq -r '
    # 将certificate和issuing_ca合并写入证书文件(自动换行)
    .data.certificate, .data.issuing_ca > "test.cert.pem";
    # 将private_key写入私钥文件
    .data.private_key > "test.key.pem"
'

方法2:先保存原始响应,再分别提取

如果需要保留Vault的原始JSON响应,可以先把结果存到临时文件,再分两次提取内容:

# 保存完整的JSON响应
vault write -format=json pki_int/issue/example-dot-com \
  common_name="test.example.com" \
  ttl="24h" \
  format=pem > vault_response.json

# 提取证书和签发CA到test.cert.pem
jq -r '.data.certificate, .data.issuing_ca' vault_response.json > test.cert.pem

# 提取私钥到test.key.pem
jq -r '.data.private_key' vault_response.json > test.key.pem

你之前命令的问题说明

  1. 命令换行错误:多行shell命令需要用\结尾来连接,否则shell会认为命令提前终止。
  2. 管道与重定向逻辑错误:第一次jq的输出被重定向到文件后,第二次jq会没有输入数据;而且你没有用|正确连接vault命令和jq。
  3. jq语法错误:输出重定向的写法不符合jq规范,需要在jq脚本内部处理文件写入,或者通过shell的进程替换来实现。

内容的提问来源于stack exchange,提问作者Broski-AC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 20:40:46