Curl 如何使用HTTP-API将用于部署的JSON字符串转换为相应的CLI格式命令?

Curl 如何使用HTTP-API将用于部署的JSON字符串转换为相应的CLI格式命令?,curl,deployment,command-line-interface,wildfly,Curl,Deployment,Command Line Interface,Wildfly,我想使用Wildfly HTTP API编写一个shell脚本来部署WAR,而不是cli,后者的效率似乎不如预期。我发现了一个脚本,其中一部分是: echo "-> Upload new war" bytes_value=`curl -sF "file=@${WAR_PATH}/${WAR_NAME}" --digest ${WILDFLY_MANAGEMENT_URL}/management/add-content | perl -pe 's/^.*"BYTES_VALUE"\s*:\s

我想使用Wildfly HTTP API编写一个shell脚本来部署WAR,而不是cli,后者的效率似乎不如预期。我发现了一个脚本,其中一部分是:

echo "-> Upload new war"
bytes_value=`curl -sF "file=@${WAR_PATH}/${WAR_NAME}" --digest ${WILDFLY_MANAGEMENT_URL}/management/add-content | perl -pe 's/^.*"BYTES_VALUE"\s*:\s*"(.*)".*$/$1/'`
echo $bytes_value

json_string_start='{"content":[{"hash": {"BYTES_VALUE" : "'
json_string_end='"}}], "address": [{"deployment":"'"${WAR_NAME}"'"}], "operation":"add", "enabled":"true"}'
json_string="$json_string_start$bytes_value$json_string_end"

echo "-> Deploy new war"
result=`curl -sS -H "Content-Type: application/json" -d "$json_string" --digest ${WILDFLY_MANAGEMENT_URL}/management | perl -pe 's/^.*"outcome"\s*:\s*"(.*)".*$/$1/'`
echo $result
我习惯于将JSON字符串转换为CLI命令,但是

'{"content":[{"hash": {"BYTES_VALUE" : "$bytes_value"}}], "address": [{"deployment":"${WAR_NAME}"}], "operation":"add", "enabled":"true"}'
使我感到困惑,因为我无法使用/deployment段找到CLI的相应命令:

[domain@$ip:9990 /] /deployment=${WAR_NAME}:add(content=[hash= 

我不知道如何完成它,有人能帮我吗?

要上传内容,您可以使用流(这些流将在WildFly 11中进入CLI)。cli使用Http API(至少在Wildfly 10中),因为这是默认的管理界面。 散列是上传内容的摘要,您应该/deployment=${WAR_NAME}:add(content=[bytes=添加内容本身或使用url参数(如果您与DC在同一台机器上,则文件url可以工作)


您可以查看:

谢谢您的建议。但我仍然没有弄明白,因为我从未遇到过这样的情况。我得到了“失败描述”=>{“域失败描述”=>“JBAS014749:Operation handler failed:null”}“添加(内容=[bytes=”(或哈希、url、路径)之后的任何内容。请给我一个完整的示例,以便我更好地理解此操作。非常感谢!/deployment=test.war:add(content=[{url=file:///home/ehsavoie/test.war}],runtime name=webcontext.war)我已经尝试了上面的命令,最后通过了这个步骤。非常感谢。