簡體   English   中英

從 Linux 命令中的 json 樣式 output 中提取變量

[英]extract variable from json style output in Linux command

我嘗試在 linux 系統中使用 AWS 機密管理器。 我可以使用 aws cli 命令

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

獲得關注 output

{
    "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 )

這是從 JSON output 中提取秘密字符串,然后從 JSON提取密碼:

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

在 linux 上,你可以試試這個gnu grep

var1=$(aws ... | grep -oP 'password\W+\K[^"\\]+')
echo "$var1"

PASSWORD111

命令正則表達式:

  • password\W+ :匹配文本password ,后跟 1+ 個非單詞字符
  • \K : 重置比賽信息
  • [^"\\]+ : 匹配任何不是"和不是\的字符的 1+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM