Home Assistant中通过command_line调用SSH遇到的问题

之前一直通过Docker版安装的Home Assistant来自动化控制一台win和mac开关机,后来发生了莫名奇妙的问题,连接显示器的两个智能插座自动开启后几十秒会自动关闭,排查后感觉是Home Assistant的问题,就换到了Home Assistant OS版本。
但同样用在之前的configuration.yaml配置命令死活不行:
主要是控制电脑开关的这段:

switch:
  - platform: command_line
    switches:
      mac_sleep:
        friendly_name: "Mac"
        command_on: "ssh -o 'StrictHostKeyChecking=no' mac@192.168.1.14 'caffeinate -u -t 1'"
        command_off: "ssh -o 'StrictHostKeyChecking=no' mac@192.168.1.4 pmset sleepnow"
        command_state: "/bin/bash -c 'nmap -sn 192.168.1.4 | grep \"Host is up\" | wc -l'"
        value_template: '{{ value | int == 1 }}'
        icon_template: mdi:apple
  - platform: command_line
    switches:
      my_pc:
        friendly_name: "Win"
        command_on: "/bin/bash -c 'ether-wake -b -i enp2s1 2c:ab:ab:ab:67:d0'"
        command_off: "ssh -o 'StrictHostKeyChecking=no' pcuser@192.168.1.2 shutdown -s -t 0"
        command_state: "/bin/bash -c 'nmap -sn 192.168.1.2 | grep \"Host is up\" | wc -l'"
        value_template: '{{ value | int == 1 }}'
        icon_template: mdi:microsoft-windows

SSH已经做好了免验证,所以可以免密码直接连接,经过测试也是能正常登录的。
在Home Assistant OS命令行里也能正常关机唤醒,这就很奇怪了,后来看了下日志都是提示SSH命令没能成功执行的。通过网上查询后知道,原来ssh生成的默认证书id_rsa是放在root/.ssh/目录下的,但在Home Assistant OS自动化中执行SSH命令时并不是root权限,所以也无法访问到root/.ssh/目录也就没办法获得默认的证书id_rsa了,导致也就无法免密登录了。
所以解决办法就是复制一份证书id_rsa到可以访问的地方:

cp /root/.ssh/id_rsa /config/.ssh/

然后在SSH命令添加-i参数指定证书位置,就OK了。

ssh -i /config/.ssh/id_rsa -o 'StrictHostKeyChecking=no' mac@192.168.1.4 pmset sleepnow

多提一句,为什么Mac没用关机后唤醒,因为发现我的M1不支持关机唤醒,所以只能求其次休眠唤醒了。如果有大佬知道怎么能让M1关机也能唤醒,请指导下我谢谢。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值