Bash OpenStack的curl和脚本问题
我目前正在做一个shell脚本,在Openstack上创建一些网络/虚拟机。在这里,我首先获取令牌,然后尝试列出所有图像。然而,环境变量似乎存在某种问题Bash OpenStack的curl和脚本问题,bash,sh,openstack,Bash,Sh,Openstack,我目前正在做一个shell脚本,在Openstack上创建一些网络/虚拟机。在这里,我首先获取令牌,然后尝试列出所有图像。然而,环境变量似乎存在某种问题 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-S
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>
devstack@MFZhani:~$./script.sh localhost
领取代币
代币
X-Auth-Token:相同的令牌
400错误请求
错误的请求
您的浏览器发送了此服务器无法理解的请求。
Apache/2.4.27(Ubuntu)服务器127.0.0.1端口80
问题是,当我硬编码令牌时,它就工作了。另外,我知道这不是由变量中的坏字符引起的,因为我正在使用完全相同的令牌执行其他命令来创建网络,并且它工作得很好(这里的区别是我在执行GET而不是POST)。使用Kamil Cuk建议的
set-x
找到它。有一个\r是我无法看到的。删除了它,它工作了。谢谢。像这样尝试set-x
:curl-s set-x \--标题“x-Auth-Token:$OS_Token”\http://$1/image/v2/images??将set-x
添加到脚本开头的第一行。跑观察输出。以+
开头的行是正在执行的命令。在google上搜索如何调试bash脚本。