通过 systemd 与命令行调用时,Curl 会产生不同的结果

通过 systemd 与命令行调用时,Curl 会产生不同的结果

我有以下单元文件:

[Unit]
Description=Sends a message to a discord channel

[Service]
Type=oneshot
ExecStart=curl --header "Content-Type: application/json" --request POST --data '{"content":"MESSAGE TEXT HERE"}' https://discord.com/api/webhooks/WEBHOOK_ID_HERE/WEBHOOK_TOKEN_HERE
DynamicUser=yes

# No [Install] since this is meant to be used with a timer

{"code": 50109, "message": "The request body contains invalid JSON."}运行 ExecStart 中的curl 命令手动将消息发布到与此 webhook 对应的 Discord 通道,同时启动服务会从 Discord 服务器生成响应。

通过 systemd 运行命令和直接运行命令有什么显着区别吗?例如,我找不到任何迹象表明 ExecStart 可能存在最大命令长度。

答案1

解决了。谢谢AB 的评论我意识到消息中有\ns,事实证明 systemd 在执行命令之前解释了它们。转义斜杠 ( \\n) 解决了这个问题,现在它可以工作了。

相关内容