J'ai un script Bash qui exécute une commande rsync pour synchroniser des fichiers avec un serveur distant.
#!/bin/bash
rsync -auvzP --exclude=.bundle --exclude=node_modules --exclude=tmp '/Volumes/Norman Data/me/.bash_profile' '/Volumes/Norman Data/me/Documents' --exclude=remote me@example.com:backup/
Cela fonctionne lorsque je l'exécute à partir du terminal car j'ai une authentification par clé ssh configurée pour mon utilisateur à l'adresse exemple.com. Cependant, lorsque launchd appelle ce script, j'obtiens l'erreur suivante indiquant qu'il ne peut pas trouver le fichier de clé de mon utilisateur ou qu'il est invalide :
Permission refusée, veuillez réessayer. Permission refusée, veuillez réessayer réessayer. me@example.com : Permission refusée (publickey,password). rsync : connexion fermée de manière inattendue (0 octet reçu jusqu'à présent) [expéditeur]. Erreur rsync : erreur dans le flux de données du protocole rsync (code 12) à l'adresse suivante /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-52/rsync/io.c(453) [sender=2.6.9] Je spécifie mon nom d'utilisateur dans mon fichier plist et lorsque j'utilise la fonction débogage, le script indique qu'il est exécuté par ce même utilisateur à la fois lors de l'exécution depuis le terminal et depuis le lancement. lorsqu'il est exécuté depuis le terminal et depuis launchd.
Mon BackupDaemon.plist :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnvironmentVariables</key>
<dict>
<key>HOME</key>
<string>/Volumes/Norman Data/me</string>
</dict>
<key>GroupName</key>
<string>staff</string>
<key>InitGroups</key>
<true/>
<key>Label</key>
<string>BackupDaemon</string>
<key>Program</key>
<string>/Volumes/Norman Data/me/backup</string>
<key>StandardErrorPath</key>
<string>/tmp/BackupDaemon.err</string>
<key>StandardOutPath</key>
<string>/tmp/BackupDaemon.out</string>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>16</integer>
<key>Minute</key>
<integer>6</integer>
</dict>
<key>UserName</key>
<string>me</string>
</dict>
</plist>
Je ne parviens pas à comprendre quel est le problème ou comment procéder à un débogage plus poussé. Si quelqu'un a des idées à partager, il sera très apprécié. Merci.