尝试松弛URL时获得无效的负载

时间:2018-07-13 17:56:49

标签: bash curl nginx slack

当nginx无法重新加载时,我正在尝试使URL松弛。我能够检查nginx失败,并且在出现时可以cURL松弛。尝试在cURL命令中包含来自失败的重载的错误消息时,我遇到了无效的有效负载错误。这是我必须执行的脚本:

#!/bin/bash

OUTPUT=$(nginx -s reload 2>&1 > /dev/null >/mnt/efs/out.txt)

ESCAPE=$(echo $OUTPUT | sed 's/"/\"/g' | sed "s/'/\'/g" )

nginx -t || curl -X POST --data-urlencode 'payload={"username": "reload-monitor-lizard", "text": "'"${ESCAPE}"'", "icon_emoji": ":ghost:"}' https://hooks.slack.com/services/xxxxxxx/xxxxx/xxxxxxxxxxxxxxxxxxxx

我尝试过使用引号,但是它仍然给我无效的有效载荷错误或发送

  

$ {ESCAPE}

作为消息。关于我做错了什么建议吗?

更新:

通过将变量中的双引号替换为单引号来解决此问题:

ESCAPE=$(echo $OUTPUT | sed "s/\"/'/g" )

3 个答案:

答案 0 :(得分:1)

这对我来说很好用:

curl -X POST -H \"Content-type: application/json\" --data \"{\\\"text\\\":\\\"Here your text!!\\\"}\" <host_slack>

答案 1 :(得分:0)

您正在尝试将www-form-urlencoded数据发布到需要JSON的端点。

除此之外,您的代码可以正常工作。

答案 2 :(得分:0)

通过将变量中的双引号替换为单引号来解决。像这样:

ESCAPE=$(echo $OUTPUT | sed "s/\"/'/g" )