сценарий оболочки wget не работает при использовании в качестве задания cron - PullRequest
1 голос
/ 22 сентября 2011

У меня есть функция в php веб-приложении, которая должна периодически вызываться заданием cron. Первоначально я просто сделал wget для URL, чтобы вызвать функцию, и все работало нормально, но с тех пор, как мы добавили аутентификацию пользователя, у меня возникли проблемы с запуском ее работы.

если я вручную выполняю эти команды, я могу войти в систему, получить cookie и затем получить доступ к правильному URL:

site=http://some.site/login/in/here
cookie=`wget --post-data 'username=testuser&password=testpassword' $site -q -S -O /dev/null 2>&1 | awk '/Set-Cookie/{print $2}' | awk 'NR==2{print}'`
wget -O /dev/null --header="Cookie: $cookie" http://some.site/call/this/function

но при выполнении в виде скрипта, вручную или через cron, он не работает.

Я новичок в сценариях оболочки, любая помощь будет оценена

это выполняется на сервере Ubuntu 10.04

Ответы [ 2 ]

0 голосов
/ 23 сентября 2011

ОК, сначала простые вещи -

  1. Я предполагаю, что файл начинается с #!/bin/bash или что-то
  2. У вас есть chmod файл +x
  3. Вы используете unix 0x0d окончания строки

И вы не ожидаете вернуть какие-либо переменные в вызывающую оболочку, я полагаю?

Неудачная попытка tee вывода каждой команды в файл журнала.

0 голосов
/ 23 сентября 2011

Теоретически, единственным отличием от их ручного выполнения и использования сценария является время.

Попробуйте вставить sleep 5 или около того перед последней командой. Возможно, http-сервер осуществляет внутреннюю связь, и это занимает некоторое время. Трудно сказать, потому что вы не опубликовали полученную ошибку.

...