如何从Linux中的密钥中提取值

时间:2019-05-12 05:19:33

标签: linux shell

“ AccessKey”:“ asdasdgfdfsd”,“ secretAccessKey”:“ asdggrt233434” 我想在Linux Shell中提取AccessKey和secretAccessKey的值。

2 个答案:

答案 0 :(得分:0)

一种简单的方法就是使用剪切

keys.data

{"AsummedRoleUser":{"AssumedRoleId":"rolenewtemp:testing","Arn":"arn:aws:sts::5335323242:assumed-role/testing/testrole"},"Credentials":{"SecretAccessKey":"asdgerdadadad","SessionToken":"Afdfddeeradasdsdasd","AccessKeyId":"Asafsdfasdasd"}

使用剪切获取密钥

accessKey=$(cat keys.data | cut -d',' -f1 | cut -d'"' -f4)
secretAccessKey=$(cat keys.data | cut -d',' -f2 | cut -d'"' -f4)

但这在许多情况下可能会失败。例如,键内是否有",。如果更改键的顺序,它也会失败。您应该适当地选择适当的键值解析。

编辑:解析数据类型的正确方法是使用jq

cat keys.data | jq '.Credentials .SecretAccessKey'将给您SecretAccessKey

cat keys.data | jq '.Credentials .AccessKeyId'将给您AccessKeyId

答案 1 :(得分:0)

最好的解决方案是使用jq。但是,如果应该快速又脏乱,以下几行可能会有所帮助:

#!/bin/bash

Extract() {
    sed -e "s/\"/'/g" -e "s/.*'$1':'\([^']*\)'.*/\1/" data.json
}

SecretAccessKey=$(Extract "SecretAccessKey")
SessionToken=$(Extract "SessionToken")
AccessKeyId=$(Extract "AccessKeyId")