当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" )
答案 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" )