首页 > 解决方案 > 从 Linux 命令中的 json 样式输出中提取变量

问题描述

我尝试在 linux 系统中使用 AWS Secrets Manager。我可以使用 aws cli 命令

aws secretsmanager get-secret-value --secret-id abc_account --version-stage AWSCURRENT

获得以下输出

{
    "ARN": "arn:aws:secretsmanager:us-east-1:123456789:secret:abc_account-XhteiW",
    "Name": "abc_account",
    "VersionId": "89637ef4-4594-4c63-9887-3f7d2c7ccc6f",
    "SecretString": "{\"username\":\"abc_account\",\"password\":\"PASSWORD111\"}",
    "VersionStages": [
        "AWSCURRENT"
    ],
    "CreatedDate": "2021-02-08T23:57:58.325000-05:00"
}

我需要将密码 PASSWORD111 保存到 linux 中的变量 var1 中。就像是

var1=$(aws secretsmanager get-secret-value --secret-id svc_vma_insights_data_platform --version-stage AWSCURRENT | awk XXXXXX )
or 
var1=$(aws secretsmanager get-secret-value --secret-id svc_vma_insights_data_platform --version-stage AWSCURRENT | grep XXXXXX )

标签: jsonlinuxawkgrep

解决方案


这是从 JSON 输出中提取秘密字符串,然后从JSON 中提取密码:

passwd=$(aws ...  | jq -r '.SecretString' | jq -r '.password')

推荐阅读