使用http远程MD5哈希

使用http远程MD5哈希

我想使用 md5sums 函数不跟踪新的在每次更新时,只需更改 pkgver 变量即可构建我的包的新版本。

md5可以在官方网站我感兴趣的项目的源存档下载范围classmd5sum

据我所知总是在of后面的spana中,它本身位于其中的两个后面,我怎样才能提取class md5sumspanclass releasedatea hreftar.xz来自网站使用 shell 脚本,该脚本可以调用通常预装在计算机上的工具安装到一个变量中,该变量将严格包含

答案1

如果您打算从页面上删除哈希值,那么这样的方法就可以了。这是我为一次性使用而编写的那种单行代码,因为一旦布局发生变化,它就可能会中断:

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

要理解为什么这是一种极其不灵活的方法,查看每个阶段的输出可能会有所帮助。

  • curl获取页面并将其发送到标准输出。 (如果您没有curl可用的,wget -O -也可以。)

    输出包括:

    ...
    <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返回包含该模式的行(您需要的源文件的名称),加上其后的 1 行:

      <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>
    
  • 我们只关心第二行,因此sed 1d删除第一行。 (如果您想确定它是 md5sum,请改用grep 'class="md5sum"'。)

      <span class="md5sum">75f8d1693a470cefe2a50abd283eb291</span>
    
  • tr命令将全部>变为<.这本身并没有什么用处,但可以将这条线变成可以cut使用的东西:

      <span class="md5sum"<75f8d1693a470cefe2a50abd283eb291</span<
    
  • 最后,cut将这些<s(包括之前的>s)视为分隔符,并提取第 3 项,即。哈希:

    75f8d1693a470cefe2a50abd283eb291
    

相关内容