Loading... > Hassio 有 RPC 插件可以很方便的关闭 Windows 主机,但是在配置 Unix 系统的关闭时遇到较多坑。 ``` Error running command:"", return code: 255 ``` 看以前的教程会遇到上述错误,以下教程解决了这个问题。 <!-- more --> ## 一、配置 Unix 端(被控主机)无密码运行 sudo shutdown ### 1.修改sudoers文件 #### 1)首先,找到shutdown的路径 ```shell $ which shutdown ``` 通常位于`/sbin/shutdown` #### 2)打开`visudo` ```shell $ sudo visudo ``` #### 3)在文件底部填下如下内容 ```shell USERNAME ALL=NOPASSWD: PATH_TO_EXECUTABLE ``` - 替换`USERNAME`为实际使用的账户(可使用`whoami`查询) - 替换`PATH_TO_EXECUTABLE`为第一步中获取到的路径 一个例子 ```shell garry ALL=NOPASSWD: /sbin/shutdown ``` ### 2.执行命令 由于`shutdown`仍然是特权命令,因此仍然需要在命令开头加上sudo。 但是,指定用户执行该命令已不需要输入密码。 ```shell $ sudo shutdown -r now ``` ### *.对于喜欢冒险的人 可将以下内容放在`sudoers`文件的底部: ```shell USERNAME ALL=NOPASSWD: ALL ``` 上面的代码可以取消所有命令对于 sudo 的密码需求,请谨慎使用。 ## 二、配置 SSH 无密码登陆 ### 1. Hassio 主机生成用于免密登陆的密钥 在`Hassio`的`Add-on Store`中安装`SSH server`。注意,若 Hassio 是安装在 Ubuntu 系统中,不能使用 Ubuntu 的 SSH,必须连接到容器内部,启动 `SSH server`时请注意端口冲突问题。 密钥不能生成在默认目录,新建文件夹 ```shell $ mkdir /config/.ssh ``` 创建 key ```shell $ ssh-keygen -t rsa ``` 储存位置输入 ```shell /config/.ssh/id_rsa ``` 不要输入密码 ### 2.被控端创建存储密钥的文件夹 若该文件夹已经存在,请跳到下一步 ```shell $ mkdir -p .ssh ``` ### 3.将密钥传输到被控端 在`Hassio`中执行以下命令 ```shell $ cat /config/.ssh/id_rsa | ssh UNIX_USERNAME@UNIX_IP 'cat >> .ssh/authorized_keys' ``` ### 4.现在可以在`Hassio`免密登录`Unix` ```shell $ ssh -i /config/.ssh/id_rsa UNIX_USERNAME@UNIX_IP ``` ## 三、配置 Homeassistant 在`configuration.yaml`中添加如下配置,网络唤醒部分请另行配置。 ```yaml shell_command: unix_off: ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /config/.ssh/id_rsa UNIX_USERNAME@UNIX_IP sudo /sbin/shutdown now ``` ```yaml switch: - platform: wake_on_lan mac_address: "UNIX_MAC" host: UNIX_IP name: "unix" turn_off: service: shell_command.unix_off ``` ## 四、参考 ##### [1.How to run privileged (sudo) commands without the password](https://ubuntu-mate.community/t/how-to-run-privileged-sudo-commands-without-the-password/2940) ##### [2.SSH login without password](http://www.linuxproblem.org/art_9.html) ##### [3.Hass.io shell_command error](https://community.home-assistant.io/t/hass-io-shell-command-error/36312/15) 听说,点赞的人都找到了真爱!! Last modification:November 20, 2019 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 听说,打赏我的人都找到了真爱!