it-swarm-es.com

Bash: descargue la última versión del programa desde el sitio web a través del terminal

Así que jugueteo. Mucho. Y eso significa que tiendo a tener que reinstalar mi sistema operativo, porque hago algo loco y lo rompo. No me importa eso, jugar es divertido. Pero para facilitarme la vida, estoy trabajando en un script bash para restaurar automáticamente todo con un solo comando.

Anoche lo usé por primera vez (cuatro días de locuras y ¡boom! Rompió todo), y fue un salvavidas. Pero hay algunas áreas que podrían mejorar.

La principal con la que estoy buscando ayuda en este momento es obtener aplicaciones que no están en la herramienta apt-get. Voy a usar Plex Media Server como ejemplo. Necesito descargar eso directamente del sitio web.

No estoy en casa en este momento, así que no tengo mi script frente a mí, pero actualmente lo estoy haciendo de esta manera (URL simuladas en mi muestra de código).

wget http://plex-website/downloads-page/plex-install-file-name-and-version.deb
dpkg plex-install-file-name-and-version.deb

Usando wget para descargar el archivo, y dpkg para instalarlo. Funciona de maravilla.

Sin embargo, este es un enfoque frágil porque depende del número de versión específico del archivo que estoy descargando. Con el tiempo, ese número de versión específico cambiará, por lo que este script quedará desactualizado.

Estoy buscando una forma dinámica de escribir esto para poder descargar el archivo desde el sitio web sin necesidad de codificar el número de versión con anticipación. Idealmente, algo que pueda usar en varios sitios, porque Plex no es el único con el que enfrentaré este problema.

Gracias por adelantado.

3
user2223059

Rasparía la página de descarga del sitio web para obtener la URL del paquete deseado.

Ejemplo: descargue la versión de 32 bits de Plex Media Server:

url=$(curl -s https://plex.tv/downloads | grep Ubuntu32 | cut -d\" -f2)
wget "$url"
dpkg -i "${url##*/}"

Para otros paquetes, deberá examinar la fuente HTML de la página que contiene los enlaces de descarga. En el ejemplo anterior, pude ver que la frase Ubuntu32 solo apareció una vez en la fuente HTML. Afortunadamente, está en el misma línea como la URL del paquete deseado: esta URL es la primera cadena de texto entre comillas dobles y el comando cut proporciona una manera simple de extraer esto cuerda del resto de la línea.

Otras aplicaciones pueden tener páginas de descarga más complicadas que pueden requerir secuencias de comandos más complejas usando sed, awk o posiblemente un lenguaje más completo como Perl, Python o Ruby.

2
Anthony Geoghegan

No sé qué archivo está obteniendo y de dónde, pero normalmente hay un acceso directo a la versión más reciente/estable, p. http://plex-website/downloads-page/plex-install-file-name-LATEST.deb Podría usar eso y también le daría el mismo nombre de archivo para el archivo descargado que podría usar en el comando dpkg.

Alternativamente, wget podría usarse con comodines para obtener todas las versiones posibles y con un poco de magia bash podrías calcular el más alto de estos.

p.ej. wget -r -l1 -np "http://plex-website/downloads-page/" -A "plex-install-file-name-4.*.deb"

2
TheFisch