微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

hawkBit swupdate Suricatta:HTTP/1.1 401 未经授权

如何解决hawkBit swupdate Suricatta:HTTP/1.1 401 未经授权

我想设置 hawkBit(在服务器上运行)和 swupdate(在多个客户端上运行 - Linux 操作系统)以在 Suricatta 模式下执行操作系统/软件更新。

1/ 跟进 my post on hawkBit community,我已成功在我的服务器中运行 hawkBit,如下所示:

  • 导出到外部链接:http://:
  • 启用 MariaDB
  • 启用网关令牌身份验证(在 hawkBit 系统配置中)
  • 创建了一个软件模块
  • 上传一个工件
  • 创建分发集
  • 将软件模块分配给分发集
  • 创建目标(在部署管理 UI 中),目标 ID 为“dev01”
  • 创建了发布
  • 创建目标过滤器

2/ 我已成功构建/执行 swupdate 为 SWupdate guideline

  • 启用 Suricatta 守护进程模式
  • 运行 swupdate:/usr/bin/swupdate -v -k /etc/public.pem -u '-t DEFAULT -u http://<domain>:<port> -i dev01'
  • 我很确定这个命令不正确,输出日志如下:
*   Trying <ip address>...
* TCP_NODELAY set
* Connected to <domain> (<ip address>) port <port> (#0)
> GET /DEFAULT/controller/v1/10 HTTP/1.1
Host: <domain>:<port>
User-Agent: libcurl-agent/1.0
Content-Type: application/json
Accept: application/json
charsets: utf-8

< HTTP/1.1 401 Unauthorized
< Date: Sun,16 May 2021 02:43:40 GMT
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Cache-Control: no-cache,no-store,max-age=0,must-revalidate
< Pragma: no-cache
< Expires: 0
< x-frame-options: DENY
< Content-Length: 0
< 
* Connection #0 to host <domain> left intact
[TRACE] : SWUPDATE running :  [channel_log_effective_url] : Channel's effective URL resolved to http://<domain>:<port>/DEFAULT/controller/v1/dev01
[ERROR] : SWUPDATE Failed [0] ERROR corelib/channel_curl.c : channel_get : 1109 : Channel operation returned HTTP error code 401.
[DEBUG] : SWUPDATE running :  [suricatta_wait] : Sleeping for 45 seconds.
  • 根据@laverman 在 Gitter 上的建议:
You can use Gateway token in the Auth header of the request,e.g. “Authorization : GatewayToken a56cacb7290a8d8a96a2f149ab2f23d1”

但是我不知道客户端是怎么发送这个请求的(应该是swupdate发送的吧?)

3/ 遵循 Tutorial @ EclipseCon Europe 2019 中的这些说明,它指导我从 hawkBit Device Simulator 发送请求以配置多个客户端。问题是如何将其应用于真实设备。

一个困惑是:在hawkBit UI上创建新的软件模块,分发时,我找不到这些ID,但是通过发送请求作为教程创建,我可以在响应中看到ID。

所以我的问题是:

1/ 我的 hawkBit 设置步骤是否正确?

2/ 我如何配置/运行 swupdate(在客户端上)来执行更新:轮询新软件、下载、更新、报告状态,...

如果我的描述不够清楚,请告诉我。

谢谢

解决方法

很高兴看到您正在尝试使用 Hawkbit 来解决您的问题!

我有几点意见:

  • GatewayToken 的 suricatta 参数分别为 -g,TargetToken 的参数为 -k
  • -g <GATEWAY_TOKEN> 需要设置在引号内 见SwUpdate Documentation 示例:/usr/bin/swupdate -v -u '-t DEFAULT -u http://<domain>:<port> -i dev01 -g 76430e1830c56f2ea656c9bbc88834a3'
  • 对于 GatewayToken 身份验证,您需要在 System Config 视图中提供生成的令牌,它是一个生成的哈希码,类似于此处的示例
  • 您还可以使用自己的 TargetToken 分别验证每个设备/客户端。 您可以在the Hawkbit documentation
  • 中找到更多信息

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。