Script de Shell para CRON que llama a la URL y guarda el archivo

Script de Shell para CRON que llama a la URL y guarda el archivo

Manualmente ingreso una URL en un navegador que llama a una página que tiene una función GET que me solicita directamente que guarde un archivo. Me gustaría automatizar con un trabajo cron en un script estas acciones:

  • Llame a la URL
  • Guarde el archivo en una carpeta específica

¿Alguien puede ayudar a escribir el guión? Puedo proporcionar la URL de forma privada para probar el comportamiento.

Respuesta1

Una forma de descargar una URL sin tener que usar una interfaz de usuario (texto o GUI) es usarla wgetcon todos los parámetros necesarios (como desee) como una tarea cron.

Acerca de wget

Un ejemplo para una única URL (con el nombre de salida combinado con una marca de tiempo, para enriquecer la respuesta, podría ser un nombre estático):

 wget URL -O "/home/uname/dirn/`date +%y%m%d-%H%M%S`-n.htm" -b
 wget URL -O "/home/uname/dirn/`date +\%y\%m\%d-\%H\%M\%S`-n.htm" -b #in crontab

nota: en cron tienes que usar "\%" (como en la segunda línea de arriba) en lugar de solo "%" (como en la primera línea de arriba), porque cron interpreta el carácter "porcentaje".

donde: se divide en:-O "/home..../date...-theRestOfTheName"

  • ruta absoluta (cron puede tener su propia ruta configurada, por lo que desde un punto de vista práctico, suele ser favorable tener la ruta de interés especificada en cada comando)

  • ejecución sobre la marcha datecon salida configurada como una especie de marca de tiempo legible por humanos

  • el resto del nombre del archivo de destino

-ble pide a wget que trabaje en segundo plano, iniciando sesión en syslog.

Opcionalmente, puede utilizar una lista de URL de un archivo ( -i filename). También puedes jugar con wget y su página de manual ( man wget): es relativamente breve y puede darte muchas ideas.

Acerca de cron

Tenga en cuenta que cron supone que su máquina está encendida en todo momento: cron no se pone al día con los trabajos durante el tiempo que la máquina estuvo apagada. Editando cron como usuario actual

crontab -e

Agregue una línea de configuración que especifique la frecuencia de ejecución del comando (la instrucción simple se muestra como un comentario en las líneas superiores del editor crontab, léala). Para ejecutar cada 5 minutos el domingo, escribirías:

# m  h  dom mon dow   command
*/5  *   *   *   0    wget google.com -O "/home/uname/dirn/`date +\%y\%m\%d-\%H\%M\%S`-ind3.htm" -b

información relacionada