Usando o hash MD5 http remoto

0

Eu gostaria de usar a função md5sums de sem acompanhar de novas em cada atualização e basta alterar a variável pkgver para criar um nova versão do meu pacote.

md5 estão disponíveis no site oficial do projeto em que estou interessado perto do download do arquivo de origem em um intervalo de class valor de md5sum

Como eu sei, as sempre estarão em span de class md5sum logo após o span de class releasedate , ele próprio atrás de dois a href tendo tar.xz neles, como posso extrair o do website usando um script de shell que pode chamar ferramentas normalmente pré-instaladas em uma instalação em uma variável que conterá apenas as ?

    
por Zulgrib 21.06.2016 / 12:00

1 resposta

1

Se você pretende retirar o hash da página, algo assim funcionará. É o tipo de one-liner que eu escrevo para uso único, porque é provável que ele quebre assim que o layout muda:

hashsum=$(curl http://php.net/downloads.php |
 grep -A1 -F ">php-${pkgver}.tar.xz<" |
 sed 1d |
 tr '>' '<' |
 cut -d '<' -f3 )

Para entender por que essa é uma abordagem incrivelmente inflexível, pode ajudar a analisar a saída de cada etapa.

  • curl busca a página e a envia para a saída padrão. (Se você não tiver curl disponível, wget -O - também funcionará.)

    A saída inclui isto:

    ...
    <ul>
              <li>
          <a href="/get/php-7.0.7.tar.bz2/from/a/mirror">php-7.0.7.tar.bz2</a> <a href="/get/php-7.0.7.tar.bz2.asc/from/a/mirror">(sig)</a> [13,776Kb]          <span class="releasedate">26 May 2016</span>
          <span class="md5sum">cc231de15146ca14a69610f695995ab8</span>
          <span class="sha256">474f2925c4782b94016e3afbb17b14ff9cc6f4fdb6f6e231b36a378bb18a3d1a</span>
                  </li>
              <li>
          <a href="/get/php-7.0.7.tar.gz/from/a/mirror">php-7.0.7.tar.gz</a> <a href="/get/php-7.0.7.tar.gz.asc/from/a/mirror">(sig)</a> [17,792Kb]          <span class="releasedate">26 May 2016</span>
          <span class="md5sum">197ec66d134da8968ddd0b89f1cfac2a</span>
          <span class="sha256">66282ff4a9f88fe9607d9574e15bf335885b964245591a1740adb3f79c514a67</span>
                  </li>
              <li>
          <a href="/get/php-7.0.7.tar.xz/from/a/mirror">php-7.0.7.tar.xz</a> <a href="/get/php-7.0.7.tar.xz.asc/from/a/mirror">(sig)</a> [11,219Kb]          <span class="releasedate">26 May 2016</span>
          <span class="md5sum">75f8d1693a470cefe2a50abd283eb291</span>
          <span class="sha256">9cc64a7459242c79c10e79d74feaf5bae3541f604966ceb600c3d2e8f5fe4794</span>
                  </li>
            <li>
        <a href="http://windows.php.net/download#php-7.0">
          Windows downloads
        </a>
      </li>
    </ul>
    ...
    
  • grep -A1 retorna a linha que contém esse padrão (o nome do arquivo de origem que você precisa), mais 1 linha depois:

      <a href="/get/php-7.0.7.tar.xz/from/a/mirror">php-7.0.7.tar.xz</a> <a href="/get/php-7.0.7.tar.xz.asc/from/a/mirror">(sig)</a> [11,219Kb]          <span class="releasedate">26 May 2016</span>
      <span class="md5sum">75f8d1693a470cefe2a50abd283eb291</span>
    
  • Nós só nos preocupamos com a segunda linha, então sed 1d apaga a primeira linha. (Se você quiser ter certeza de que é um md5sum, use grep 'class="md5sum"' ).

      <span class="md5sum">75f8d1693a470cefe2a50abd283eb291</span>
    
  • O comando tr transforma todos os > em < . Isso não é útil por si só, mas transforma a linha em algo com o qual cut pode trabalhar:

      <span class="md5sum"<75f8d1693a470cefe2a50abd283eb291</span<
    
  • Por fim, cut trata os < s (incluindo os que anteriormente eram > s) como delimitadores e extrai o terceiro item, ou seja. o hash:

    75f8d1693a470cefe2a50abd283eb291
    
por 21.06.2016 / 12:35