小编Son*_*eGu的帖子

Bash变量在插入cURL命令时被屠杀

该脚本的第一部分如下所示:

curl -k -X POST -H "Content-Type: application/x-www-form-urlencoded" -H "Cache-Control: no-cache" -d 'username=username&password=password "https://get_token" >> token.txt
token=$(<'token.txt'$'\r')
echo "$token"
Run Code Online (Sandbox Code Playgroud)

echo $ token的输出看起来不错(417个字符):

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyTVd0bGo4Y1VPYW8xNmdZTlV4QWlFS3RLcTc1b2JsSEN0c3hKWnlxeExCTkRKb1wvKzNSK1l5XC9YUFhoWExLaytJRVdKSE5CTE9MZmxPNksxemFjYXVlM0t1NnFIQjNRXC9QeUxzUTdVSmVOYk9pS3FDeHhcLzk1dz09IiwibmJmIjoxNDgzOTg5NjgwLCJpc3MiOiJwaHgtcmVtc3QtMDAzIiwiX2NhY2hlSWQiOjE0MzA0OCwiZXhwIjoxNDgzOTkzNDAwLCJpYXQiOjE0ODM5ODk4MDAsImp0aSI6IklER0FBNVYwR1pNU0pBTzk5QlVXTzhOMDY5VlRGTiJ9.H3vD-WfZBFXOII4k-cy7Ey2QM9YXytp31m9-Huj9vKw
Run Code Online (Sandbox Code Playgroud)

让我们看看当我尝试将令牌插入脚本的下一部分时会发生什么。

echo curl -k -X POST -H "Content-Type: application/json" -H "Authorization: AR-JWT "$token"" -H "Cache-Control: no-cache" -d '{ 
  "values":{
      
    "First_Name": "John",
    "Last_Name": "Doe",
  }
}  ' "https://randomurl.com"
Run Code Online (Sandbox Code Playgroud)

这是输出:

curl -k -X POST -H Content-Type: application/json -H Authorization: AR-JWT eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyTVd0bGo4Y1VPYW8xNmdZTlV4QWlFS3RLcTc1b2JsSEN0c3hKWnlxeExCTkRKb1wvKzNSK1l5XC9YUFhoWExLaytJRVdKSE5CTE9MZmxPNksxemFjYXVlM0t1NnFIQjNRXC9QeUxzUTdVSmVOYk9pS3FDeHhcLzk1dz0 -H Cache-Control: no-cache -d { OiJwaHgtcmVtc3QtMDAzIiwiX2NhY2hlSWQiOjE0MzA0OCwiZXhwIjoxNDgzOTkzNDAwLCJpYXQiOjE0ODM5ODk4MDAsImp0aSI6IklER0FBNVYwR1pNU0pBTzk5QlVXTzhOMDY5VlRGTiJ9.H3vD-WfZBFXOII4k-cy7Ey2QM9YXytp31m9-Huj9vKw
  "values":{
      
    "First_Name": "John",
    "Last_Name": "Doe",
  }
}   https://randomurl.com
Run Code Online (Sandbox Code Playgroud)

传递令牌时发生2件事

  • 令牌中的“ 9IiwibmJmIjoxNDgzOTg5NjgwLCJpc3Mi”被删除

  • 令牌的第二部分(在删除部分之后)插入主体 …

bash shell curl

3
推荐指数
1
解决办法
525
查看次数

使用cURL的Bash脚本; 不发送POST作为JSON

我正在创建一个简单的bash脚本来运行cURL POST命令.该脚本即使是相同的命令也不会将POST数据作为json发送.

当我手动输入命令时,它将POST数据作为JSON发送,没有任何问题.

$ curl --include --header 'Accept:application/json' --header 'Authorization:Basic xxxxxxxxxxxxxxxxx' --data '{"sourceTemplateId":111111111111111}' --header 'Content-Type:application/json' https://api.everbridge.net/rest/notifications/000000000000000
HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Wed, 18 May 2016 18:13:15 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive

{
  "message" : "OK",
  "id" : 5748251085623370,
  "baseUri" : "https://api.everbridge.net/rest/notifications/000000000000000/",
  "instanceUri" : "https://api.everbridge.net/rest/notifications/000000000000000/5748251085623370"
}
Run Code Online (Sandbox Code Playgroud)

当我为我的bash脚本运行echo时,我得到了这个.

$ ./Send_Not.sh
curl --include --header 'Accept:application/json' --header 'Authorization:Basic xxxxxxxxxxxxxxxxx' --data '{"sourceTemplateId":111111111111111}' --header 'Content-Type:application/json' https://api.everbridge.net/rest/notifications/000000000000000
Run Code Online (Sandbox Code Playgroud)

字面上相同的格式

但是当我运行脚本时,我收到了这个错误.

$ ./Send_Not.sh
HTTP/1.1 415 Unsupported Media Type
Server: nginx/1.8.0
Date: Wed, 18 May 2016 18:28:50 …
Run Code Online (Sandbox Code Playgroud)

rest bash json curl urlencode

2
推荐指数
1
解决办法
1894
查看次数

标签 统计

bash ×2

curl ×2

json ×1

rest ×1

shell ×1

urlencode ×1