“ AccessKey”:“ asdasdgfdfsd”,“ secretAccessKey”:“ asdggrt233434” 我想在Linux Shell中提取AccessKey和secretAccessKey的值。
答案 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")