Scripts y comandos SSH en Home Assistant

Después de leer este tutorial serás capaz de enviar comandos por SSH y ejecutar scripts desde el dispositivo en donde tienes instalado home assistant a otros dispositivos, para poder reiniciarlos remotamente entre otras cosas.

Para ello generaremos “keys” entre los dispositivos para que se puedan reconocer entre si y mandarse órdenes.

Paso 1 

Lo primero que hay que hacer es abrir un terminal en el dispositivo donde tengamos instalado home assistant.

Logueamos con el usuario que creamos al instalar home assistant con el siguiente comando:

sudo su -s /bin/bash homeassistant

Y activamos el entorno virtual de python (PASO IMPORTANTE) de la siguiente forma:

source /srv/homeassistant/bin/activate

Paso 2

Ahora vamos a generar la clave o key que será necesaria para vincular los dispositivos usando el siguiente comando:

ssh-keygen

El sistema nos preguntará en que archivo y si queremos ponerle contraseña a la clave, dejamos en blanco a todo y damos a enter para generar la clave. Una vez generada la clave nos debe aparecer algo parecido a esto:

Recordad el guardar la ruta del archivo que contiene la clave, por si la necesitáramos más adelante para usarla en otros dispositivos.

Paso 3

Ahora que tenemos la clave segura generada, es el momento de instalarla en el dispositivo al que queremos enviar el comando.

Si queremos controlar el dispositivo local procedemos con el siguiente comando:

ssh-copy-id -i /home/homeassistant/.ssh/id_rsa pi@127.0.0.1 (Recordad poned vuestro usuario e ip si son diferentes)

Una vez realizado el comando os pedirá la contraseña del dispositivo a conectar , la introducimos y se nos quedarán vinculados los dos dispositivos.

Si es el primer dispositivo que vais a vincular utilizando el siguiente comando es suficiente:

ssh-copy-id pi@127.0.0.1

Una vez realizado esto si quereis  vincular más dispositivos por SSH no hace falta generar nuevas claves, puesto que siempre utilizaremos la creada anteriormente, pero para estos nuevos dispositivos SÍ necesitais especificar la ruta del archivo y ejecutar la linea de la siguiente manera:

ssh-copy-id -i /home/homeassistant/.ssh/id_rsa user@ip

Paso 4

Vamos a comprobar si los pasos anteriores han funcionado, para ello solo debemos ejecutar la siguiente linea:

ssh pi@127.0.0.1

Y ahora deberias estar logueado en el terminal SSH del otro dispositvo desde el usuario de home assistant, una SSH inception en toda regla , y a partir de aquí ya podéis crear vuestros scripts en home assistant para mandar órdenes por SSH.

 

 

Aquí os dejamos un pequeño ejemplo de un switch para reniciar una raspberry pi por SSH:

- platform: command_line
  switches:
      reiniciarpi:
         command_on: "ssh pi@127.0.0.1 'sudo shutdown -r now'"

Ejecución de scripts

Asímismo, una vez hecho los pasos anteriores, el usuario homeassistant será capaz de ejecutar scripts, a través del usuario pi.

Por ejemplo, vamos a crear un script para actualizar Home Assistant.

Así no tendrás que abrir la consola y meter los comandos como explicamos aquí

Para ello creamos un archivo que llamaremos por ejemplo upgradeha.sh

Incluiremos lo siguiente:

#!/bin/bash

# upgrade system
echo "Actualizando repositorios"

sudo apt-get update
sudo apt-get upgrade -y

#upgrade home assistant

echo "Parando servicio Home Assistant"

sudo systemctl stop home-assistant@homeassistant.service

#Become user 'homeassistant'
sudo su -s /bin/bash homeassistant <<'EOF'

# Activate the virtualenv

echo "Entrando en entorno de virtualizacion"

source /srv/homeassistant/bin/activate

echo "Lanzando actualizacion a la ultima version de HomeAssistant"

# Install Home Assistant
pip install --upgrade pip
pip3 install --upgrade homeassistant

exit
EOF

echo "Reiniciando servicio HomeAssistant"

# Restart Home Assistant
sudo systemctl start home-assistant@homeassistant.service

Guardamos los cambios.

Ahora en home assistant añadimos a shell_comands lo siguiente:

shell_command:

  actualizar_ha: ssh pi@127.0.0.1 sudo bash /ruta/del/scripts/upgradeha.sh

En este caso lo que hacemos es decirle al usuario pi de nuestra misma raspberry que ejecute el script

Tanto el switch como el script, lo podrás organizar en tu home assistant con la guía de grupos y pestañas

Como siempre, si tienes cualquier duda, deja tu comentario o ponte en contacto con nosotros en telegram

Hasta la próxima!

También te podría gustar...

4 Respuestas

  1. 25 agosto, 2018

    […] uso de los comandos por SSH que te explicábamos anteriormente, hoy vamos a supervisar el estado de los servicios de raspbian […]

  2. 12 septiembre, 2018

    […] vamos a hacer uso de los comandos mediante SSH y que está perfectamente explicado en esta entrada http://domology.es/scripts-y-comandos-ssh-en-home-assistant/, para poder comunicarnos entre Homeassistant y el sistema donde está […]

  3. 15 noviembre, 2018

    […] conseguir lo que hace nuestro compañero en este otro tutorial pero teniendo Homeassistant en […]

  4. 15 noviembre, 2018

    […] necesitas poder ejecutar comandos SSH en el sistema desde Homeassistant, con lo que puedes usar el tutorial que hay en la web para […]

Deja un comentario