Exécution d'un script bash

Je te remercie @oncleben31, a priori en passant par le service de l’addon terminal tout fonctionne bien chez moi maintenant en passant par cette technique :clap: :clap:

1 « J'aime »

Content de lire que ca fonctionne. Hésite pas à marquer le poste qui sert de solution à ta question initiale.

Bonjour,

Je me permet de déterrer ce conversation car j’ai à peu près le même comportement que décrit @Gogo mais avec l’utilisation de la solution de @oncleben31.

Voici un résumé de ma configuration et la description du problème:

Contenu du script de backup:

#!/bin/bash

# create new snapshot
echo \#\#\# Home assistant backup started $(date +"%Y_%m_%d__%H_%M_%S") >> /backup/log/backup_$(date +"%Y_%m_%d").log
ha backups new --name $(date +"%Y_%m_%d__%H_%M_%S")

# use rsync to copy only archives that dont already exist on NAS
echo \#\#\# RSync started >> /backup/log/backup_$(date +"%Y_%m_%d").log
rsync -rtvu --exclude 'log' --rsync-path=/usr/bin/rsync /backup/ nas:/mnt/user/Nas/Backup_HA

# delete snapshots older than 14 days to save disk space
echo \#\#\# Cleanup old backups started >> /backup/log/backup_$(date +"%Y_%m_%d").log
find /backup/ -type f -name '*.tar' -mtime +14 -exec rm {} \;

echo Script completed >> /backup/log/backup_$(date +"%Y_%m_%d").log

Droits du fichier de script:

➜ ~ ls -al /config/scripts/shell/hassio_backup.sh
-rwxr-xr-x    1 root     root           711 Feb 25 16:21 /config/scripts/shell/hassio_backup.sh

Shell-command:

shell_command: 
  backup_script: /bin/bash /config/scripts/shell/hassio_backup.sh

Automation:

- alias: Sauvegarde hebdomadaire du Lundi à 2h00
  trigger:
  - platform: time
    at: '2:00'
  condition:
  - condition: time
    weekday:
    - mon
  action:
  - service: shell_command.backup_script
  - service: notify.mobile_app_mi_10t
    data_template:
      message: Creation du backup hebomadaire.
  initial_state: 'on'

Résultat dans le fichier de log tail -f /config/home-assistant.log:

2022-02-25 16:58:29 INFO (MainThread) [homeassistant.components.automation.sauvegarde_hebdomadaire_du_lundi_a_2h00] Sauvegarde hebdomadaire du Lundi à 2h00: Running automation actions
2022-02-25 16:58:29 INFO (MainThread) [homeassistant.components.automation.sauvegarde_hebdomadaire_du_lundi_a_2h00] Sauvegarde hebdomadaire du Lundi à 2h00: Executing step call service
2022-02-25 16:58:29 INFO (MainThread) [homeassistant.components.automation.sauvegarde_hebdomadaire_du_lundi_a_2h00] Sauvegarde hebdomadaire du Lundi à 2h00: Executing step call service
2022-02-25 16:58:29 INFO (MainThread) [homeassistant.components.mobile_app.notify] mobile_app push notification rate limits for Mi 10T: 3 sent, 500 allowed, 0 errors, resets in 8:01:30

Dans le log, on peut voir que l’automation est exécuté, et qu’il exécute 2 ‹ call service ›… je suppose que l’un est pour l’exécution du shell-command et l’autre est pour l’envoi de la notification.
Cependant, je n’obtiens pas de nouvelle sauvegarde ni d’écriture de log.

Donc pour troubleshoot le problème, je lance un ‹ call service › depuis l'Outil de développement dans l’onglet Services:

Et voici résultat dans le fichier de log tail -f /config/home-assistant.log:

2022-02-25 17:09:33 INFO (MainThread) [homeassistant.helpers.script.websocket_api_script] websocket_api script: Running websocket_api script
2022-02-25 17:09:33 INFO (MainThread) [homeassistant.helpers.script.websocket_api_script] websocket_api script: Executing step call service
2022-02-25 17:09:34 ERROR (MainThread) [homeassistant.components.shell_command] Error running command: `/bin/bash /config/scripts/shell/hassio_backup.sh`, return code: 1
NoneType: None

Du coup, j’ai testé la solution proposé par @oncleben31 :

Automation:

- alias: Sauvegarde hebdomadaire du Lundi à 2h00
  trigger:
  - platform: time
    at: '2:00'
  condition:
  - condition: time
    weekday:
    - mon
  action:
  - service: hassio.addon_stdin
    data:
      addon: a0d7b954_ssh
      input: "/config/scripts/shell/hassio_backup.sh"
  - service: notify.mobile_app_mi_10t
    data_template:
      message: Creation du backup hebomadaire.
  initial_state: 'on'

Mais j’obtiens le même résultat que précédemment, c’est à dire, je reçois bien la notification telegram mais toujours pas de sauvegarde ni d’écriture de log.

J’ai conscience que l’exposition de mon problème est un peu longue mais je préfère le faire afin que toutes les personnes qui lirons ces lignes, comprendrons de quoi je parle.

Merci d’avance de votre aide.

J’ai oublié de mentionner que si je fais appel au script par le terminal, il n’y a pas de problème… le backup fonctionne bien ainsi que l’écriture du fichier de log.

Peut être un problème de droits ? Essaie de modifier le propriétaire

Hello @tony059 ,

Personnellement j’ai abandonné l’idée de passer par son propre script bash pour effectuer mes backups.
J’utilise désormais l’add-on Samba Backup, qui permet de faire la même chose sans avoir a se prendre la tête et qui te mets aussi à disposition des services si besoin. Jettes-y un coup d’œil, ça peut être aussi une solution alternative pour toi !

hassio-addons/samba-backup at master · thomasmauerer/hassio-addons · GitHub

Pour répondre à la question initiale, une source d’information est l’intégration GitHub - frtz13/homeassistant_gazpar_cl_sensor: Importer la consommation journalière et index de consommation de gaz dans Home Assistant qui demande la mise en place d’un appel du script de l’intégration .

Avantage: l’explication est en français.