Curl은 systemd와 명령줄을 통해 호출할 때 다른 결과를 생성합니다.

Curl은 systemd와 명령줄을 통해 호출할 때 다른 결과를 생성합니다.

다음과 같은 단위 파일이 있습니다.

[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에서 컬 명령을 실행하면 이 웹후크에 해당하는 Discord 채널에 수동으로 메시지가 게시되고, 서비스를 시작하면 Discord 서버에서 응답이 생성됩니다.

systemd를 통해 명령을 실행하는 것과 직접 실행하는 것 사이에 큰 차이가 있습니까? 예를 들어, ExecStart에 대한 최대 명령 길이가 있을 수 있다는 표시를 찾을 수 없습니다.

답변1

해결되었습니다. 감사해요AB의 코멘트나는 메시지에 s가 있다는 것을 깨달았고 \nsystemd는 명령을 실행하기 전에 명령을 해석하는 것으로 나타났습니다. 이스케이프된 슬래시( \\n)로 문제가 해결되었으며 이제 작동합니다.

관련 정보