Exécution d'un script bash

Bonjour à tous !

Je souhaiterai savoir si l’un d’entre vous à déjà réussi à lancer depuis HA un script bash ?

Me concernant je tente via une automatisation, de lancer toutes les nuits l’exécution d’un script bash qui me permet de faire une sauvegarde de mon système et de la pousser sur mon NAS.

Mon automatisation :

- alias: 'Snapshot everyday at 5AM'
  trigger:
    - platform: time
      at: '05:00:00'
  action:
    - service: shell_command.backup
    - service: notify.mobile_app_iphone
      data_template:
        message: "Créé et poussé à {{ now().strftime('%H:%M:%S') }}"
        title: '/!\ Snapshot'

Et ma commande bash :

shell_command: 
       backup: '/bin/bash  /config/script/backup.sh'

Problème, je tombe sur une erreur à l’appel par mon automatisation à l’exécution du bash => return code: 127

Alors que si j’exécute cette même commande dans un terminal, tout se passe bien et je n’ai aucun problème…

En fouillant sur le net, je n’ai pas trouvé grand chose de concret, alors si quelqu’un a déjà été confronté à ce problème ou peut m’aider je suis preneur !

Merci :nerd_face:

1 J'aime

Je ne suis pas du tou expert mais ce n’est pas plutot cela qu’il faudrait prendre

De ce que j’en comprends celui ci te génère et te crée un sensor.

Alors que le shell_command génère un service que tu peux ensuite appeler dans une automatisation, c’est pourquoi je m’étais tourné vers celui-ci.

Ok comme je t’ai dis je n’y connais rien mais j’avais déjà entendu parlé de ça alors au cas ou hahah

Aucun problème, merci quand même :grin:

Je te confirme que le Command line sensor te génère bien un sensor, car je m’en sers pour me remonter le résultat d’un ls -l et l’afficher

La retour 127 signifie que tu n’as pas les droits pour cette commande (de mémoire).

Ca marche car tu te logue avec un utilisateur ayant les droits.

Tu as quoi comme installation ? Supervised ? Core ?

Home assistant n’a pas tous les privilèges.

Je crois bien que tu as raison, d’après ce que j’en avais lu c’était bien un problème de droit.

J’ai peut être pas toutes les réponses, mais je sais seulement que j’utilise HASSIO sur Raspberry PI :roll_eyes:

Faut que tu fournisse la commande du bash car sinon on peut pas t’aider…

Je pense que l’endroit ou le script bloque c’est au moment de l’exécution de « ha snapshots new » pour la création du snapshot depuis la commande HA.

(J’ai tenté depuis node-RED de lancer la même commande, et j’ai effectivement la même erreur aussi)

Pour que l’on puisse t’aider, fournie nous ton bash en changeant les identifiants/mot de passe/chemin de destination.

Le voici :

#!/bin/bash
set -eu

IP_NAS=IP
NOW=$(date +"%Y-%m-%d")
FILE_NAME="backup_${NOW}"

echo "Backup in progress"

SNAPSHOT_CMD=$(ha snapshots new --name ${FILE_NAME})

SNAPSHOT_NAME=$(echo $SNAPSHOT_CMD | awk '{print $2}')

echo "Backup done"

mv /backup/${SNAPSHOT_NAME}.tar /backup/${FILE_NAME}.tar

echo "Push to Freenas"

scp -p /backup/${FILE_NAME}.tar USER@${IP_NAS}:/mnt/poupoule/HASSIO

echo "Clean old backup on Freenas"

ssh USER@${IP_NAS} 'find /mnt/poupoule/HASSIO -type f -mtime +3 -delete'

mv /backup/${FILE_NAME}.tar /backup/${SNAPSHOT_NAME}.tar

echo "Clean backup on HA"

ha snapshots remove ${SNAPSHOT_NAME}

echo "End script"

Merci pour ton aide !

De rien, je vais essayer de regarder dans la semaine…

Est que tu peux essayer ça :

  1. Créer une archive
  2. Mettre en commentaire les commandes de création dans le bash et ne garder que les commandes suivantes (déplacement, suppression du bas de la pile et enfin suppression du snapshot)

Ca permettent de confirmer tes doutes sur la commande de creation.

Si pas assez clair, n’hésite pas.

Je crois que j’ai eu le même problème à une certaine époque mais je me souviens plus comment je l’ai résolu.

J’ai ce script pour la sauvegarde hebdomadaire sur mon NAS: https://github.com/oncleben31/home-assistant-config/blob/master/config/scripts/shell/hassio_backup.sh

Il y a des indices dans les commentaires de mon script.

Attends ! J’avais fais un article sur le wiki de ma conf: https://github.com/oncleben31/home-assistant-config/wiki/Hass.io-backup

Par contre c’est en anglais.
Un volontaire pour en faire une copie traduite ici ? Ca peut servir à d’autres mais j’avoue que j’ai un peu la flemme et il faudrait surtout que quelqu’un teste mes instructions pour s’assurer que c’est toujours bon. En tout cas j’ai toujours mon message de sauvegarde toutes les semaines.

1 J'aime

Je te confirme, après un test, que le problème vient bien de la commande "ha snapshot’

Merci @oncleben31 pour toutes ces infos, je vais regarder tout ça ! :+1:

Tu es sur que tes snopshots marchent toujours et sont toujours fait du coup ? :wink:

EDIT : Effectivement en fouillant sur le net j’étais déjà tombé sur ton article, mais je n’ai pas encore essayé. Je vais le faire tout de suite !

Tu m’as mis le doute. :scream: Maintenant que tu le dis je suis sensé avoir une deuxième notification qui me dit que mon bakcup est uploadé dans le cloud (géré par le NAS). Et ca fait longtemps que je l’ai pas vu cette notification.

Après double check, tout fonctionne à part la deuxième notification. J’ai bien mes sauvegarde, sur le raspberry pi, le NAS et dans le cloud… Ouf. :sweat_smile:

Désolé pour la frayeur ! :smiling_imp:
Je vais testé ta solution, si cela marche chez toi, il n’y a pas de raison pour que chez moi non.

Car sinon je ne vois pas d’autres solutions, j’ai testé l’utilisateur qui lance la commande. Elle est bien effectuée en root des deux côtés. je ne vois donc pas pourquoi cela fonctionne via le terminal et non via une automatisation.

Ce sujet traine depuis trop longtemps de mon côté, je vais essayer ta solution.
Lancer le script à la main c’est plus possible là :wink:

Tu le lance d’où le script à la main ?

Je me connecte directement en ssh sur le raspberry et je le lance