Pregunta

Estoy intentando descargar un archivo html con rizo en bash. Al igual que en este sitio: http://www.registrar.ucla.edu/ calendario / detselect.aspx? termsel = 10S & subareasel = Física y idxcrs = 0001B +++

Cuando descargo de forma manual, funciona bien. Sin embargo, cuando intento y corro mi guión a través de crontab, el archivo de salida HTML es muy pequeño y sólo dice "Objeto movido aquí". con un enlace roto. ¿Tiene esto algo que ver con el medio ambiente escasos los comandos crontab que corren? Me encontré con esta pregunta:

php ssl enrollamiento: objeto de error movido

pero yo estoy usando bash, no PHP. ¿Cuáles son las opciones de línea de comandos o variables equivalentes para configurar para solucionar este problema en bash?

(quiero hacer esto con rizo, no wget)

Edit: Bueno, a veces de descargar el archivo manualmente (a través de shell interactivo) funciona, pero a veces no (todavía obtener el "Objeto movido aquí" mensaje). Por lo tanto, no puede ser un un ser específicamente un problema con el entorno del cron, pero con el enrollamiento de sí mismo.

la entrada 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

Editar: Problema resuelto. El problema era las etiquetas callejeros en la url. Era porque yo estaba haciendo sed s,"<URL>",\""$url"\", template.txt > test.sh para generar los scripts y SED sustituye todas las instancias de & con el <URL> expresión regular. Después de fijar la url, rizo funciona bien.

¿Fue útil?

Solución

desea que la opción -L o --location, que sigue redirecciones 300 de la serie. --maxredirs [n] limitará curl para redirecciones n.

Su curioso que esto funciona a partir de un shell interactivo. ¿Está obteniendo los mismo url? Siempre se puede tratar abastecimiento de las secuencias de comandos de entorno en su entrada cron:

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

EDIT: el ejemplo url es algo diferente que el que está en el guión. $url en el guión tiene un par adicional de etiquetas <URL>. Reemplazándolos con &, los separadores de argumentos convencionales para las solicitudes GET, funciona para mí.

Otros consejos

Sin ver la secuencia de comandos que es difícil de adivinar qué es exactamente lo que está pasando, pero lo más probable es que se trata de un problema de medio ambiente como supones.

Una cosa que a menudo ayuda consiste en especificar la ruta completa de los ejecutables y archivos de secuencia de comandos.

Si usted muestra su guión y entrada de crontab, que puede ser de más ayuda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top