在Node RED中执行目标终端SSH

前言

在部署流程后或者安装更新节点后需要重启nr,一般是进docker管理界面或者进宿主机的ssh进行重启,作为懒癌患者必须把重启放在nr里,鼠标点一点就可以完成重启操作(同样适用于其他ssh操作),本文以重启docker版的NodeRED为例进行分享。

准备

1、需要nr的docker安装软件sshpass(我的docker已经在nr官方的基础上安装sshpass,可直接使用jeesa/node-red-ffmpeg

2、直接使用nr自带的exec节点

3、挂载/usr/src/node-red/.ssh文件夹

4、需要执行的命令的终端ip和ssh命令,例如:ssh root@192.168.2.6 ‘docker restart nodered’

使用

在docker运行时增加ssh证书文件夹挂载,例如:

  nodered:
    image: jeesa/node-red-ffmpeg:latest
    container_name: nodered #可修改为自己好记的名字
    network_mode: "host"
    volumes:
      - /opt/nodered/data:/data
      - /opt/nodered/ssh:/usr/src/node-red/.ssh
    environment:
      - TZ=Asia/Shanghai
    restart: always

获取一次目标主机ssh证书

需要先进入docker 连接一次目标主机,以获取ssh证书
使用docker exec -it nodered /bin/bash进入docker,其中noedered为docker名与container_name一致
或者使用partainer的控制台
Containers  nodered  Console

进入docker后,先使用ssh连接目标主机,例如:ssh root@192.168.2.1,在询问时输入yes后确认,如下图:


此操作完成即可退出,后续再通过ssh远程此目标主机不会再提示证书问题了。

NR中增加控制节点

关闭终端即可,进入nr的web界面,增加exec节点


打开节点,在命令中输入 sshpass -p+密码 (-p和密码中间没有空格),
在追加中输入要执行的ssh命令,例如:ssh root@192.168.2.6 'docker restart nodered’,如下图
##exec#
完成后增加触发,时间戳无需任何修改,追加与exec节点连接即可

结尾

至此已完成nr中操作ssh的功能,如需重启nr直接点一下时间戳就可以完成重启,非常方便。同时因为此操作过于简单,流就不分享了,还有其他功能也可以使用此方法。

本文无任何技术可言,仅分享一下个人的使用技巧,起到抛砖引玉的作用,望各位大佬可以开发出更多更有趣实用的玩法。