Добрый день.
Имеется SunOS 5.11 sparc x64, sh-скрипт, crontab задача
Задача: ежедневно заливать по FTP файл на удаленную машину.
Изначально использовалась утилита ncftpput, которая отлично справлялась с задачей, но после не известных событий (о чем админы молчат) просто перестал работать скрипт.
Начал копать, ничего не нашел.
Сейчас используется обыкновенный /usr/bin/ftp, который в автоматическом режиме отказывается работать. В ручную все отлично, но когда crontab запускает скрипт, все выполняется (ведется небольшой лог), но часть кода с ftp отказывается.
вот часть скрипта с ftp:export path_nngs
path=$HOME/work
export file_name
file_name=`cat $text_file`
...
ftp x.x.x.x <<EOF
put $file_name
lcd $path/ftp_tr
get $file_name
bye
EOFВкратце. В text_file записывается имя файла для заливки на сервер, которое считывается в file_name.
В разделе ftp сначала заливаю файл, потом его скачиваю в другое место, чтобы потом убедиться что передача прошла успешно.Что может быть не так? В ручную все команды скрипта выполняются.
> Что может быть не так? В ручную все команды скрипта выполняются.Если скрипт сам по себе срабатывает (при запуске "вручную"), скорее всего, при запуске через cron не выставлены нужные переменные окружения (в первую очередь PATH).
Также возможно несоответствие интерпретатора, который используется при ручном запуске скрипта, и того, который применяется при запуске из-под cron.
Если же скрипт сам по себе не работает как скрипт (даже при запуске вручную), следует смотреть на сообщения об ошибках и чинить скрипт.
>> Что может быть не так? В ручную все команды скрипта выполняются.
> Если скрипт сам по себе срабатывает (при запуске "вручную"), скорее всего, при
> запуске через cron не выставлены нужные переменные окружения (в первую очередь
> PATH).
> Также возможно несоответствие интерпретатора, который используется при ручном запуске
> скрипта, и того, который применяется при запуске из-под cron.
> Если же скрипт сам по себе не работает как скрипт (даже при
> запуске вручную), следует смотреть на сообщения об ошибках и чинить скрипт.Спасибо за ответ.
В ручную скрипт работает и все отправляет без проблем.
в самом начале скрипта явно указан интерпретатор
#!/bin/bashЯ пробовал изменить строку запуска в cron
45 1 * * * (. ~/.profile; ~/runscript.sh)
Но результата нет. в mail прилетает сообщение, что
Sourcing /home/user/.profile-EIS....
и все. Я так понимаю что файл профиля загружен, но скрипт не запущен.Наверное ошибка в строке запуска? забыл sh?
> Наверное ошибка в строке запуска? забыл sh?Я бы попробовал либо включить все нужные переменные окружения в сам скрипт, либо в него непосредственно прописал команду включения профиля.
Также я бы в crontab прописал полный путь к скрипту (без использования тильды).
>> Наверное ошибка в строке запуска? забыл sh?
> Я бы попробовал либо включить все нужные переменные окружения в сам скрипт,
> либо в него непосредственно прописал команду включения профиля.
> Также я бы в crontab прописал полный путь к скрипту (без использования
> тильды).В скриптах переменные окружения заданы явно. С ними все нормально
С кроном, я сделал следующее.45 1 * * * /bin/bash $HOME/script.sh
Тестирование на более раннем времени прошли успешно. Теперь будем надеяться что и в 1:45 все сработает.