Назад | Перейти на главную страницу

Curl не работает при запуске с crontab

Это мой сценарий завитка

#!/bin/bash

PING_STATUS="$(netcat -vz mc.bella.wtf 25565 2>&1)"
curl -H "Content-Type: application/json" -X POST -d '{"embeds": [{"title": "Server Status:","color": 16027903,"description": "'"$PING_STATUS"'"}]}' "$WEBHOOK"

Вот что я получаю, когда запускаю свой crontab:

mc@ubuntu:~$ crontab -l
* * * * * /home/mc/server/ping >/tmp/mycommand.log 2>&1
mc@ubuntu:~$ cat /tmp/mycommand.log 
curl: (3) <url> malformed

Почему мой URL-адрес имеет неправильный формат, если он работает нормально при запуске скрипта отдельно?

Причина в том, что ваша переменная env WEBHOOK не распознается.

Решение 1

В твоем /etc/environment Добавить:

WEBHOOK="http://example.org"

и в вашем crontab:

*/1 * * * * source /etc/environment; /home/mc/server/ping >/tmp/mycommand.log 2>&1

Решение 2

Уточнить WEBHOOK в вашем скрипте curl:

#!/bin/bash
WEBHOOK="http://example.org"
PING_STATUS="$(netcat -vz mc.bella.wtf 25565 2>&1)"
...

Решение 3

curl скрипт:

#!/bin/bash
source $HOME/.profile
PING_STATUS="$(netcat -vz mc.bella.wtf 25565 2>&1)"
...

$ HOME / .profile

WEBHOOK="http://example.org"