尝试cURL松弛时获取无效负载



当nginx重新加载失败时,我正在尝试cURL松弛。我能够检查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" )

通过用单引号替换变量中的双引号修复。像这样:

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

这对我来说很好:

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

您正试图将www形式的url编码数据发布到需要JSON的端点。

除此之外,您的代码运行良好。

最新更新