Bash: Baixe a última versão do programa do site via terminal

4

Então eu tinker. Muito. E isso significa que eu costumo ter que reinstalar o meu sistema operacional, porque eu faço algo louco e quebrá-lo. Eu não me importo, mexer é divertido. Mas para tornar minha vida mais fácil, estou trabalhando em um script bash para restaurar tudo automaticamente com um único comando.

Ontem à noite eu usei pela primeira vez (Quatro dias de coisas malucas, e boom! Quebrou tudo), e foi um salva-vidas. Mas há algumas áreas que poderiam ser melhoradas.

O principal que estou procurando ajuda agora é obter aplicativos que não estão na ferramenta apt-get. Eu vou usar o Plex Media Server como um exemplo. Preciso baixar isso diretamente do site.

Não estou em casa agora, por isso não tenho meu script na minha frente, mas atualmente estou fazendo isso (URLs falsas no meu exemplo 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 o wget para baixar o arquivo, e o dpkg para instalá-lo. Funciona como um encanto.

Essa é uma abordagem frágil, porque depende do número da versão específica do arquivo que estou baixando. Com o tempo, esse número de versão específico será alterado, portanto, esse script ficará desatualizado.

Eu estou procurando uma maneira dinâmica de escrever isso para que eu possa baixar o arquivo do site sem precisar codificar o número da versão antes do tempo. Idealmente, algo que eu possa usar em vários sites, porque o Plex não é o único com o qual vou enfrentar este problema.

Obrigado antecipadamente.

    
por user2223059 10.03.2016 / 15:08

2 respostas

2

Eu digitalizaria a página de download do website para obter o URL do pacote desejado.

Exemplo: baixe a versão de 32 bits do Plex Media Server:

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

Para outros pacotes, você precisaria examinar o código-fonte HTML da página que contém os links de download. No exemplo acima, pude ver que a expressão Ubuntu32 apareceu apenas uma vez na origem HTML. Felizmente, ele está na mesma linha como o URL do pacote desejado: essa URL é a primeira string de texto entre aspas duplas e o comando cut fornece uma maneira simples de extrair essa string de o resto da linha.

Outros aplicativos podem ter páginas de download mais complicadas, que podem exigir scripts mais complexos usando sed , awk ou possivelmente uma linguagem mais completa, como Perl, Python ou Ruby.

    
por Anthony Geoghegan 10.03.2016 / 15:50
2

Eu não sei qual arquivo você está recebendo e de onde, mas normalmente há um atalho para a versão mais recente / estável, por exemplo, http://plex-website/downloads-page/plex-install-file-name-LATEST.deb Você poderia usar isso e também lhe daria o mesmo nome de arquivo para o arquivo baixado que você poderia usar no comando dpkg.

Alternativamente, o wget poderia ser usado com curingas recebendo todas as versões possíveis e com alguma magia bash você poderia descobrir a maior delas.

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

    
por TheFisch 10.03.2016 / 15:56

Tags