Вы также должны добавить:
Wants=network-online.target
Это гарантирует, что все настроенные сетевые устройства включены и им назначен IP-адрес перед запуском службы.
Команды, считанные из стандартного ввода или из файла, указанного в опции -f
, выполняются sh
во FreeBSD в соответствии сat(1)
руководством . Это означает, что строка#!
-вашего скрипта игнорируется.
Чтобы сценарий выполнялся правильно, запланируйте выполнение сценария вместо команд в файле сценария.
Вы делаете это, например, вот так:
echo /usr/local/bin/asterisk_wakeup_call.sh | at -t 20210140636.00
Ваша полная команда (при условии, что LIST
должна быть строкой с разделенными пробелами -числами):
sudo env \
FILE=hello-world.gsm \
LIST='4001 5001 6001' \
CALLERID=123 \
sh -c 'echo /usr/local/bin/asterisk_wakeup_call.sh | at -t 20210140636.00'
или,
echo /usr/local/bin/asterisk_wakeup_call.sh |
sudo env \
FILE=hello-world.gsm \
LIST='4001 5001 6001' \
CALLERID=123 \
at -t 20210140636.00
Это также использует env
для передачи переменных среды в запускаемую оболочку, что безопаснее, чем использование sudo -E
. Если есть другие переменные окружения, которые необходимо передать, как -, то вы, очевидно, можете сделать это любым удобным для вас способом.
Также обратите внимание, что указанное вами время 20210140636.00
неверно. Где-то не хватает одной цифры (, вероятно, в спецификации дня):2021 01 40 636.00