【问题标题】:Get Artifactory stored file checksum via BASH通过 BASH 获取 Artifactory 存储的文件校验和
【发布时间】:2019-07-23 23:38:31
【问题描述】:

我有一个文件存储在 Artifactory 中。我需要在不下载的情况下获取它的校验和。

需要使用 BASH。

url="http://$abc/$def/$qwe/file.a?properties"
curl -u "$user":AP"$pass" "$url"

不起作用。我收到没有属性的错误。该文件存在,具有校验和,并且路径正确。

如果能将 MD5 校验和放入 var 并检查命令是否成功,那就太好了。

【问题讨论】:

    标签: artifactory


    【解决方案1】:

    一种选择是使用: https://www.jfrog.com/confluence/display/RTF/Artifactory+REST+API#ArtifactoryRESTAPI-ItemProperties

    例子:

    curl http://artifactory.host/api/storage/libs-release-local/org/acme
    

    您可以将它通过管道传输到 jq(它是一个命令行 JSON 解析器)并只获取您需要的校验和。

    curl http://artifactory.host/api/storage/libs-release-local/org/acme | | jq .checksums.sha1
    

    其他选项是简单地使用 curl 执行 HEAD 请求:

    curl -I http://$abc/$def/$qwe/file.a
    

    然后 grep 你想要的校验和。

    【讨论】:

    • 嗨,jq 代码不起作用......最后一个建议 -I 确实起作用了。但是, -I 选项实际上不是下载文件吗?我不想下载文件...
    • -I for curl 执行仅显示标头的 http HEAD 请求。从 curl 手册页 '-I, --head 仅显示文档信息'。
    • 什么不适用于 jq?它可能没有安装。您必须在运行该命令的机器上安装它。 stedolan.github.io/jq
    【解决方案2】:

    您可以使用REST API 获取文件信息,并使用jq 过滤掉MD5。

    例如:

    url="http://localhost:8081/artifactory"
    pathToFile="path/to/file"
    curl -u "$user":"$pass" "$url/api/storage/$pathToFile" | jq '.checksums.md5'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 2018-05-12
      • 2015-04-30
      • 2023-04-03
      相关资源
      最近更新 更多