通过bash脚本执行curl请求

时间:2017-08-29 20:54:52

标签: bash shell curl

我必须在我的应用程序中插入许多数据,并通过图形界面需要很多时间。出于这个原因,我想创建一个bash脚本并使用REST API通过curl发出请求(我必须手动指定id)。

问题是我收到错误:服务器拒绝了此请求,因为请求实体的格式不受所请求方法所请求资源的支持。

这是代码

#!/bin/bash   

for i in {1..1}
do                                                                                                                                                                                  
CURL='/usr/bin/curl -X POST'
RVMHTTP="http://192.168.1.101:8080/sitewhere/api/devices 
  -H 'accept:application/json' 
  -H 'content-type:application/json' 
  -H 'x-sitewhere-tenant:sitewhere1234567890' 
  --user admin:password"

DATA=" -d  '{\"hardwareId":\"$i",\"siteToken\":\"4e6913db-c8d3-4e45-9436-f0a99b502d3c\",\"specificationToken\":\"82043707-9e3d-441f-bdcc-33cf0f4f7260\"}'"

# or you can redirect it into a file:
$CURL $RVMHTTP $DATA >> /home/bluedragon/Desktop/tokens
done

我的请求格式必须是json

1 个答案:

答案 0 :(得分:4)

spark.executor.instances -> number of executors

spark.executor.cores -> number of cores per executors

spark.task.cpus -> number of tasks per cpu

注意:

  • 用于解析为多个单词的命令或命令片段永远不会存储在字符串中。请改用数组或函数。这些字符串中的引号不会被解析为语法,而是(在没有#!/usr/bin/env bash rvmcurl() { local url url="http://192.168.1.101:8080/sitewhere/${1#/}" shift || return # function should fail if we weren't passed at least one argument curl -XPOST "${rvm_curl_args[@]}" "$url" "$@" } i=1 # for testing purposes rvm_curl_args=( -H 'accept:application/json' -H 'content-type:application/json' -H 'x-sitewhere-tenant:sitewhere1234567890' --user admin:password ) data=$(jq -n --arg hardwareId "$i" ' { "hardwareId": $hardwareId, "siteToken": "4e6913db-c8d3-4e45-9436-f0a99b502d3c", "specializationToken": "82043707-9e3d-441f-bdcc-33cf0f4f7260" }') rvmcurl /api/devices -d "$data" 的情况下解析时,它带有自己的serious risks and caveats)成为文字值。有关完整说明,请参阅BashFAQ #50
  • 使用JSON感知工具(例如eval)来确保生成的数据是合法的JSON。
  • 二进制文件的完全限定路径通常是反模式。它不会带来显着的性能提升(shell缓存PATH查找),但它 会减少你的脚本'可移植性和灵活性(阻止您在PATH,导出的shell函数或其他方面安装jq的包装器。)
  • 全部大写变量名称位于名称空间used for variables with meaning to the shell and operating system中。使用至少有一个小写字符的名称作为自己的变量,以防止发生冲突。
相关问题