Скрипт systemd работает, но не использует curl

Я борюсь с переносом сценария инициализации на systemd на Debian Jessie.

Цель состоит в том, чтобы получить доступ к URL-адресу после загрузки и до завершения работы. Служебный файл выглядит следующим образом:

[Unit]
Description=some_name
After=syslog.target network-online.target 
Wants=network-online.target 

[Service]
Type=oneshot
ExecStart=/bin/bash /home/xyz/scripts/register.bash
ExecStop=/bin/bash /home/xyz/scripts/deregister.bash
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target 

Сценарий регистрации (URL-адреса заменены на xyz, эхо для отладки):

#!/bin/bash
IP=$(hostname -I)
IP=${IP/ /}

echo  "-- register $(date) IP=$IP"  >>/home/xyz/register.txt
echo  "   $(who -r) ID=$(id) HOST=$(host x.y.z)" >>/home/xyz/register.txt

/usr/bin/curl --max-time 30 "http://x.y.z/some_script" -s -o /dev/null 

echo "   exit code $?" >>/home/xyz/register.txt

echo "-- reg done $(date)" >>/home/xyz/register.txt

exit 0

Запуск сценариев из командной строки работает должным образом, в том числе и с правами root. В частности, curl обращается к URL так, как должен.

Также скрипт запускается при загрузке и завершении работы и ведет соответствующие трассировки в register.txt. Все идет нормально.

Что не работает, так это то, что curl завершается с кодом 28 (тайм-аут) при запуске через systemd. Это также происходит, когда я запускаю его с помощью "systemd start" из полностью загруженной системы с запущенной и работающей сетью. Так что недоступность сети, похоже, не является причиной тайм-аута.

Почему в этих условиях истекает время ожидания curl и что мне нужно изменить, чтобы служба работала должным образом?

Спасибо за вашу помощь


person user52366    schedule 20.10.2015    source источник
comment
такого рода проблемы лучше обсудить на сайте, посвященном stackexchange, unix.stackexchange.com ... Тем не менее, я рад, что вы решили свою проблему. Удачи.   -  person shellter    schedule 20.10.2015


Ответы (1)


Задача решена:

Все это происходит на виртуальном сервере, и доступ по http теперь осуществляется через прокси, которого раньше не было, когда я использовал сценарий инициализации.

Установка прокси-переменной в скрипте, вызываемом systemd, решила проблему ...

person user52366    schedule 20.10.2015