[英]extract token from curl result by shell script
我写这个脚本
#!/bin/bash
# cm.sh
curl -i \
-H "Content-Type: application/json" \
-d '
{ "auth": {
"identity": {
"methods": ["password"],
"password": {
"user": {
"name": "admin",
"domain": { "id": "default" },
"password": "secret"
}
}
}
}
}' \
"http://localhost/identity/v3/auth/tokens" ; echo
echo $tokenizer1
echo $tokenizer2
但是所有这些(awk或sed)都是一样的
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 540 100 312 100 228 312 228 0:00:01 --:--:-- 0:00:01 5142
我的目标是将令牌放入变量中以备后用。 预先谢谢你们。
您可以将结果保存到文件中,然后使用grep命令来代替使用cURL的直接结果。 可能是这样的:
curl -o boulou.txt http://localhost/identity/v3/auth/tokens && cat boulou.txt | grep "X-Subject-Token" | awk '{printf $2}'
编辑,如果只希望输出,请在cURL命令中添加--silent
:
curl -o boulou.txt http://localhost/identity/v3/auth/tokens --silent && cat boulou.txt | grep "X-Subject-Token" | awk '{printf $2}'
编辑2:如果您要导出它并删除文件,则可以使用以下方法:
export OS_TOKEN=$(curl -o billy.txt hhttp://localhost/identity/v3/auth/tokens --silent && cat billy.txt | grep "X-Subject-Token" | awk '{printf $2}') && rm billy.txt
“当内容存储在变量中时,当我将其传递给JSON文档时,如何使用grep / awk从curl中提取字段中的标头?” 确实是一个非常棘手且独特的问题。
但是,如果逐步模拟出代码的每个部分以缩小范围,您会发现这是您可以研究或询问的更简单的问题:
如何在变量内容上使用grep / awk?
我有一个包含HTTP标头的变量,我想提取其中一个的值。 这是一个例子:
variable='Foo: 1 Bar: 2 Baz: 3'
这就是我试图从
Bar
获得2
:# Just hangs tokenizer1=$variable `grep "Bar" | awk '{printf $2}'` # Is empty tokenizer2=$variable | `grep "Bar" | awk '{printf $2}'`
答案是使用echo
传递内容,以便grep可以在stdin上读取它:
tokenizer3=$(echo "$variable" | grep "Bar" | awk '{printf $2}')
这很容易应用于您的示例:
tokenizer3=$(echo "$token" | grep "X-Subject-Token" | awk '{printf $2}')
echo "The value is $tokenizer3"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.