nixp.ru v3.0

27 мая 2017,
суббота,
07:19:49 MSK

DevOps с компанией «Флант»
Anarchist написал 11 сентября 2008 года в 11:54 (712 просмотра) Ведет себя как мужчина; открыл 258 тем в форуме, оставил 4097 комментариев на сайте.

На самом деле вопрос звучит: что за хуйня?!?

FreeBSD 4.11-RELEASE #0

Исполняемый скрипт вида:

#!/bin/sh
#
HOST=ft.somedomain.ru
#
ftp -n $HOST < /home/user/ftp_script
exit 0

где ftp_script — это файл следующего содержания

quote USER $USER
quote PASS $PASSWD
binary
get some_file
quit

При запуске из ssh-сессии — работает на ура.

При запуске из cron’а — хуй!

Аналогично fetch:

#!/bin/sh
#
HOST=ft.somedomain.ru
#
fetch ftp://USER:PASSWORD@$HOST/some_file.pdf
exit 0

При запуске из интерактивной сессии shell’а — работает на ура.

Из cron — не работает.

Причём на FreeBSD 6.X скрипты первого типа работают — только в путь.

Интересно что за глюк?

ЗЫ: Выкрутился через wget, попутно выяснив, что с FTP он по умолчанию качает в текстовом режиме. Бинарный включается опцией --dot-style=binary.

metal

Сам же в faq написал, что делать если у тебя из cron что-то не работает. Скорее всего не находиться ftp.

Anarchist
metal
Сам же в faq написал, что делать если у тебя из cron что-то не работает. Скорее всего не находиться ftp.

Дык думаешь я не проверял?

В данном случае этот рецепт не работает.

И ftp и fetch живут в /usr/bin, который прописан в умолчательном PATH crond’а.

+ то, что на FreeBSD 6.X оно же работает!

ЗЫ: Для других, более шаманских скриптов, описанный путь работает, здесь — нет.

metal

А с этим порядок?

ENVIRONMENT

      Ftp utilizes the following environment variables.

      HOME   For default location of a .netrc file, if one exists.

Права на скрипт?

Anarchist
metal
А с этим порядок?

Полный. Цитировался тестовый скрипт, в котором я отрабатывал необходимые аргументы fetch’а.

Потом команда переносилась в боевой скрипт, где всё это было учтено.

metal
Права на скрипт?

'x' для всех выставлен.

Далее — ещё интереснее:

вставляю после строки с вызовом ftp (для fetch’а не проверял)

set > $HOME/crond.env

И не нахожу файла crond.env.

Переношу эту строку до вызова ftp — он находится там, где ему и положено быть.