Вопрос

Я пытаюсь загрузить html-файл с curl в bash.Нравится этот сайт:http://www.registrar.ucla.edu/schedule/detselect.aspx?termsel=10S&subareasel=PHYSICS&idxcrs=0001B +++

Когда я загружаю его вручную, он работает нормально.Однако, когда я пытаюсь запустить свой скрипт через crontab, выходной html-файл очень маленький и в нем просто написано "Объект перемещен сюда". с неработающей ссылкой.Имеет ли это какое-то отношение к разреженной среде, в которой запускаются команды crontab?Я нашел этот вопрос:

php ssl curl ( php ssl curl ) :ошибка перемещения объекта

но я использую bash, а не php.Какие эквивалентные параметры командной строки или переменные следует установить, чтобы устранить эту проблему в bash?

(Я хочу сделать это с помощью curl, а не wget)

Редактировать:ну, иногда загрузка файла вручную (через интерактивную оболочку) работает, но иногда это не так (я все еще получаю сообщение "Объект перемещен сюда").Таким образом, это может быть проблема не конкретно со средой cron, а с самим curl.

запись cron:
* * * * * ~/.class/test.sh >> ~/.class/test_out 2>&1

test.sh:

#! /bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/sbin
cd ~/.class

course="physics 1b"
url="http://www.registrar.ucla.edu/schedule/detselect.aspx?termsel=10S<URL>subareasel=PHYSICS<URL>idxcrs=0001B+++"

curl "$url" -sLo "$course".html  --max-redirs 5

Редактировать:Проблема решена.Проблема заключалась в посторонних тегах в URL-адресе.Это было потому, что я делал sed s,"<URL>",\""$url"\", template.txt > test.sh чтобы сгенерировать скрипты, sed заменил все экземпляры & с помощью регулярного выражения <URL>.После исправления URL-адреса curl работает нормально.

Это было полезно?

Решение

Вы хотите, чтобы -L или --location вариант, который следует за перенаправлениями 300 серий. --maxredirs [n] ограничит curl до n перенаправляет.

Любопытно, что это работает из интерактивной оболочки.Вы получаете один и тот же URL-адрес?Вы всегда можете попробовать найти скрипты вашей среды в своей записи cron:

* * * * * . /home/you/.bashrc ; curl -L --maxredirs 5 ...

Редактировать: пример URL-адреса несколько отличается от того, что указан в скрипте. $url в скрипте есть дополнительная пара <URL> Теги.Заменяя их на &, обычные разделители аргументов для GET просит, работает на меня.

Другие советы

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

Одна вещь, которая часто помогает, - это указать полный путь к исполняемым файлам в вашем скрипте.

Если вы покажете свой скрипт и запись в crontab, мы сможем вам больше помочь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top