【问题标题】:hawkBit swupdate Suricatta: HTTP/1.1 401 UnauthorizedhawkBit swupdate Suricatta:HTTP/1.1 401 未经授权
【发布时间】:2021-05-21 19:48:47
【问题描述】:

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

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

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

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

  • 启用 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 设备模拟器配置多个客户端。问题在于如何将其应用到真实设备上。

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

所以我的问题是:

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

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

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

谢谢

【问题讨论】:

    标签: swupdate eclipse-hawkbit


    【解决方案1】:

    很高兴看到您正在尝试使用 Hawkbit 解决方案!

    我有几点意见:

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

    【讨论】:

    • 您好,应用-g选项后,更新设备成功,但确实有问题。更新状态不会反映在 hawkBit UI 上。请指教。这是相关日志:` [TRACE]:SWUPDATE 正在运行:[execute_shell_script]:调用 shell 脚本 /tmp/scripts/update.sh postinst:返回 0 [INFO]:SWUPDATE 成功! SWUPDATE 成功! [TRACE]:SWUPDATE 正在运行:[network_initializer]:主线程再次休眠! [信息]:没有运行 SWUPDATE:正在等待请求...`对不起,我必须在多个 cmets 中发布。
    • ` [TRACE]:SWUPDATE 正在运行:[channel_post_method]:通道 put 操作返回 HTTP 状态代码 200。[TRACE]:SWUPDATE 正在运行:[server_create_details]:详细信息 0 已安装所有块。 [TRACE]:SWUPDATE 正在运行:[server_create_details]:最终详细信息:“已安装所有块。” [TRACE]:SWUPDATE 正在运行:[server_send_deployment_reply]:报告 ID 3 的安装进度:无/继续/“已安装所有块”。 `
    • ` [TRACE] : SWUPDATE running : [channel_post_method] : Channel put 操作返回 HTTP 状态码 200。 [INFO ] : SWUPDATE running : [server_install_update] : 更新成功,正在执行更新后操作。 [DEBUG]:SWUPDATE 正在运行:[server_install_update]:更新后操作成功执行。 [DEBUG]:SWUPDATE 正在运行:[suricatta_wait]:休眠 300 秒。 `
    • ` [WARN]:SWUPDATE 正在运行:[server_has_pending_action]:已安装的更新正在等待测试,忽略可用的更新操作。 [INFO] : SWUPDATE running : [server_has_pending_action] : 请重新启动 SWUpdate 以向上游报告测试结果。 [DEBUG]:SWUPDATE 正在运行:[start_suricatta]:没有待处理的操作。 [DEBUG]:SWUPDATE 正在运行:[suricatta_wait]:休眠 300 秒。 ` 重新运行swupdate,更新自动重新运行,重复上述过程。分发集在 hawkBit UI 中作为“强制”分配给目标。
    • 我有几个问题: - 代理 (swupdate) 如何连接到 hawkbit?通过 DMF/DDI? - UI 中的状态是什么?您是否看到任何操作状态消息?还是该操作停留在待处理状态?
    猜你喜欢
    • 2021-05-04
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 2018-05-19
    • 2020-06-11
    • 2017-02-22
    相关资源
    最近更新 更多