this post was submitted on 31 Oct 2023
9 points (100.0% liked)

homeassistant

11884 readers
44 users here now

Home Assistant is open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server. Available for free at home-assistant.io

founded 1 year ago
MODERATORS
 

Howdy. I have a bash called backup.sh script in /config and I've added the shell_command to configuration.yaml:

shell_command:
  backup: /root/config/backup.sh

I'm running HAOS, the shell script has the correct owner:group and permissions. I can execute the script when I ssh into HAOS, but when I call the Shell Command: backup service from HA's Developer Tools, I get:

stderr: "/bin/sh: /root/config/gitupdate.sh: not found"
returncode: 127

Any thoughts on this?

top 5 comments
sorted by: hot top controversial new old
[–] CondorWonder@lemmy.ca 6 points 11 months ago (1 children)

Try executing just /config/backup.sh - the config directory is mapped into the HA container under /config, not under /root.

That did it. Thanks, @CondorWonder@lemmy.ca!

I had tried backup.sh thinking HAOS might map the config dir to /, and I obviously tried /root/config/backup.sh, but I didn't try the middle ground. :)

[–] mike_wooskey@lemmy.d.thewooskeys.com 1 points 11 months ago (1 children)

So now I have a probably-related question: the script runs, but it won't authenticate with my gitea repo:

stderr: "Host key verification failed.\r\nfatal: Could not read from remote repository.\n\nPlease make sure you have the correct access rights\nand the repository exists."
returncode: 128

Again, when I run the script while ssh-ed into HAOS, it works fine. So I suspect that when HA runs the shell script (e.g., via Developer Tools or an Automation), it's doing it as a different user, or perhaps from a different container from which I haven't yet copied the pubkey into gitea. What do you think?

[–] ShunkW@lemmy.world 2 points 11 months ago* (last edited 11 months ago) (1 children)

I'd guess that it's running under a different user. You can find the user executing it and provide the key to that user via copying it to their ssh directory, or by using an identity file option for your command.

Although now that I think of it, I'd create a separate key and provide that public key to keep it separate from your user account.

[–] mike_wooskey@lemmy.d.thewooskeys.com 1 points 11 months ago* (last edited 11 months ago)

create a separate key and provide that public key to keep it separate from your user account.

I agree this is a better method.

I'm having trouble figuring out which user or container HA is using to execute the shell command. I docker exec -it homeassistant /bin/bash, ran ssh-keygen, and copied the pubkey into gitea, but it had no effect. I tried to run ssh-keygen in the hassio-cli container but ssh-keygen isn't installed (so my assumption is that this isn't a container that would do something that might need a key, because HA didn't pre-load ssh-keygen - maybe I'm wrong). When I docker inspect the HA containers and grep for "User" or "UID", there is no result.