Extraia informações com curl ou algo assim

2

Eu pretendo escrever um script para o build automático do VirtualBox Eu vejo cada lançamento VirtualBox colocar uma versão (é claro) e uma versão de lançamento.

Neste exemplo

http://download.virtualbox.org/virtualbox/5.0.6/VirtualBox-5.0.6-103037-Linux_amd64.run

5.0.6 é a versão e 103037 é a versão de lançamento, provavelmente uma revisão do git.

Toda nova versão, é claro, há uma nova versão, é possível extrair sem conhecer a versão de lançamento, talvez com curl ou algo assim?

    
por elbarna 10.10.2015 / 21:07

2 respostas

3

Isso é bastante limpo, mas depende de lynx para despejar links (em vez de analisar o HTML de origem com regex ou algo assim):

wget -q "https://www.virtualbox.org/wiki/Linux_Downloads" -O - | lynx -stdin -dump -listonly | grep -Eo 'http.+amd64.run$'

O último grep regex assume que você precisa da versão amd64.

Mesma coisa com curl :

curl -s "https://www.virtualbox.org/wiki/Linux_Downloads" | lynx -stdin -dump -listonly | grep -Eo 'http.+amd64.run$'

UPDATE: foi corretamente apontado que chamar wget ou curl não é necessário:

lynx -dump -listonly "https://www.virtualbox.org/wiki/Linux_Downloads" | grep -Eo 'http.+amd64.run$'

    
por 10.10.2015 / 22:51
1

usando apenas o wget, não é necessário usar a versão de lançamento, apenas a versão é necessária:

wget -e robots=off -nd -r --no-parent -A 'VirtualBox-5.0.6-*-Linux_amd64.run' http://download.virtualbox.org/virtualbox/5.0.6/

wget suporta globing no modo recursivo como parte do padrão de aceitação, então:

-r : download recursivo
--no-parent : não recurse em ..
-A 'VirtualBox-5.0.6-*-Linux_amd64.run' : use padrão de aceitação com glob | -e robots=off : não baixe o robots.txt % -nd : não crie subdiretórios localmente

Usar uma variável de ambiente para versão é obviamente possível:

VER=5.0.6
wget -e robots=off -nd -r --no-parent -A "VirtualBox-${VER}-*-Linux_amd64.run" http://download.virtualbox.org/virtualbox/${VER}/
O

VER pode ser recuperado no link , de modo que isso se torna:

VER=$(wget -O - http://download.virtualbox.org/virtualbox/LATEST.TXT)
wget -e robots=off -nd -r --no-parent -A "VirtualBox-${VER}-*-Linux_amd64.run" http://download.virtualbox.org/virtualbox/${VER}/

Ou use o curl ou o lynx para extrair as informações da versão ...

Se usado em um cron script, você pode igualar cada dia ao ver local env var (wget para NEWVER) e somente baixar quando NEWVER for diferente do VER atual

    
por 11.10.2015 / 00:28

Tags