shell:计算curl表达式

shell:计算curl表达式

在下面的脚本中,我生成一个状态代码,如果 statusCode=200,则发送数据;否则,如果 statusCode!=200,我生成令牌,并通过调用 eval“$request_cmd”来发送消息。 强文本 但实际上,当我这样做时,我在 eval“$request_cmd”这一行收到此错误“command introuvable”。

#!/bin/bash

#variables
randomNumber=$(shuf -i000000-999999 -n1)
eventTime=$(date --rfc-3339=ns | sed 's/ /T/')
idEpc="OneVariable"
fromRecordtime=`date --utc +%FT%T.%3NZ`
goodStatus="200"


printf "\n ---------------------------------> SENDING MESSAGE <-------------------------------------- \n\n"

request_cmd=$(curl -X POST -w "%{http_code}" --http1.0 \
"$1/api/acquire/rabbitmq/epcis" \
-H 'Authorization: Basic YWtytrytrytrytrW46trttrytrytr' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: text/xml' \
-H 'Postman-Token: 2c4f9rtertzertertrezatre4' \
-H "X-Authorization: Bearer ${generatedToken}" \
-d 'Here i have the data')
echo $request_cmd

if [ "$request_cmd" != "$goodStatus" ]
then
    printf "\n ---------------------------------> GETTING TOKEN <-------------------------------------- \n\n"
    generatedToken=$(curl -X POST $2/MyURL/token -H 'Cache-Control: no-cache' -H 'Content-Type: application/x-www-form-urlencoded' -d 'grant_type=client_credentials&client_secret=abesdfsd677c-6dsdfsba-4ddfsc8-978fsdfdsfsb-ec256cf65914&client_id=che-gateway' | jq -r .access_token)
eval "$request_cmd"
echo $request_cmd

答案1

这里有几个问题。

在下面的脚本中,我生成一个状态代码,如果 statusCode=200

这不是你的代码的作用。它同时放置状态代码返回到变量中的任何文档$request_cmd。如果文档为空,这现在可能不会给您带来问题,但它有点草率。

https://superuser.com/questions/272265/getting-curl-to-output-http-status-code

如果 statusCode !=200,我会发送数据,否则我会生成一个令牌,并通过调用 eval "$request_cmd" 来发送消息

这不是你的代码所做的。假设您运行第一次卷曲,并且返回类似“401 Unauthorized”的信息。 eval 将尝试运行命令“401”,但没有调用该命令的命令。

我想你的意思是使用bash 函数这里。您可以使用 bash 函数多次运行同一段代码。

这是我的意思的一个例子:

function request_cmd {
status_code=$(curl -s -o /dev/null -X POST -w "%{http_code}" --http1.0 \
"$1/api/acquire/rabbitmq/epcis" \
-H 'Authorization: Basic YWtytrytrytrytrW46trttrytrytr' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: text/xml' \
-H 'Postman-Token: 2c4f9rtertzertertrezatre4' \
-H "X-Authorization: Bearer ${generatedToken}" \
-d 'Here i have the data')
echo $status_code
}
request_cmd # calls curl and puts result into $status_code
generatedToken=foo # changes the value of generatedToken
request_cmd # calls curl again with new generatedToken value

相关内容