OpenStack的curl和脚本编写问题

时间:2019-03-27 13:58:26

标签: bash sh openstack

我目前正在做一个Shell脚本来在Openstack上创建一些网络/ VM。在这里,我首先获取令牌,然后尝试列出所有图像。但是,环境变量似乎存在某种问题

echo "GETTING TOKEN"
res=$( curl -sD - -o /dev/null \
-H "Content-Type: application/json" \
-d '
...
}' \
http://$1/identity/v3/auth/tokens)

token=$(echo "$res" | awk '/X-Subject-Token: /{print $NF}')

export OS_TOKEN="$token"

echo $OS_TOKEN

echo  "X-Auth-Token: $OS_TOKEN"

curl -s \
--header "X-Auth-Token: $OS_TOKEN" \
 http://$1/image/v2/images

这是我得到的输出:

devstack@MFZhani:~$ ./script.sh localhost
GETTING TOKEN
THE TOKEN
X-Auth-Token: THE SAME TOKEN
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.27 (Ubuntu) Server at 127.0.0.1 Port 80</address>
</body></html>

问题是,当我对令牌进行硬编码时,它可以工作。另外,我知道这不是由变量中的错误字符引起的,因为我正在执行其他命令,并使用完全相同的令牌来创建网络,并且效果很好(这里的区别在于,我正在执行GET而不是POST )。

1 个答案:

答案 0 :(得分:0)

通过Kamil Cuk建议的set -x找到了它。有一个\ r,否则我看不到。删除它并起作用。谢谢。