本帖最后由 ylilike 于 2022-7-30 18:00 编辑
有时候需要重要一下容器,不管是用命令 docker restart container_name
或者 进入 portainer 选中 container_name重启 总归是有点繁琐…… 那么问题来了,有什么简单方便的方法,或者,做个开关一键重启呢? 答案显然是 :yes 前置条件要有portainer,重启调用了portainer API 的 restart 命令抓登陆包首先,打开浏览器,按F12开发者工具,然后,登陆一下portainer,找到auth 得到request: Request URLUL | | Request Method | POST | Request payload | {"username":"admin","password":"12342234"} |
响应的结果为: {"jwt":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsInJvbGUiOjEsInNjb3BlIjoiZGVmYXVsdCIsImV4cCI6MTY1Nzc5Mjg0M30.C51VqcP2F_YwaLceMAufxxQE-ufvMxcvkk6XQ2V4zyc"}
这就是auth验证的关键 在node-red中构造请求payload 用 function ,内容如下: 点击时间戳,得到 jwt认证token 抓取重启的包有了token再来抓个重启的包: Request URLUL | | Request Method | POST | Request payload | {} |
url中那一长串,是容器的id auth 已经在上一步获取到了,万事俱备,只欠构造! 构造重启请求auth调用上步登陆取的jwt值,写进headers中,id值从portainer中取到。 request节点请求方式选 : 用msg method 设定 这样就可以手动从node-red中重启容器了。 home-assistant 中调用一键重启这方式就多种多样了,我就拿mqtt来做个开关,一键重启了。 做一个虚拟的mqtt开关 switch: - platform: mqtt name: "重启smb" state_topic: "/restart_smb/stat" command_topic: "/restart_smb/cmmd" payload_on: "on" payload_off: "off"
写入home-assistant的配置文件中并重启。 然后到node-red中加入 mqtt 做关联:如下图 导出的流分享如下:
|