Lancement toutes les 30 minutes (avec crontab) d'un script ZSH : ne se fini pas correctement

MilesTEG

Membre actif
Club iGen
29 Octobre 2007
325
21
42
Bonsoir,
J'espère que cette section sera la plus appropriée pour mon message :)

Je cherche à lancer un script (en ZSH) toutes les 30 minutes.

J'essaye tant bien que mal de faire fonctionner une tâche crontab toutes les 2 minutes pour vérifier que tout se passe bien :
*/2 * * * * /bin/zsh -c "/Users/milesteg/Gitea/Git-et-Powershell_Win10/Scripts\ macOS/rclone-cours-collegue.sh" > ~/crontab.log


Mais, même si la tâche se lance, elle n'aboutit pas correctement :
j'ai une erreur "Code Exit inconnu 127 = Arrêt immédiat du script."
Or ce script se lance parfaitement depuis une invite shell avec la commande :
/bin/zsh -c "/Users/milesteg/Gitea/Git-et-Powershell_Win10/Scripts\ macOS/rclone-cours-collegue.sh" > ~/crontab.log
Même chose avec "/Users/milesteg/Gitea/Git-et-Powershell_Win10/Scripts\ macOS/rclone-cours-collegue.sh"


J'ai même essayé la tâche crontab dans le /bin/zsh -c mais même chose, ça génère l'erreur
Le script en question :
Bash:
#!/bin/zsh

# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ Script pour faire une synchronisation descendante des cours d'XXXXXX    ║
# ║ depuis Google-Drive avec la commande rclone                              ║
# ╚══════════════════════════════════════════════════════════════════════════╝

# On va supposer que la commande rclone est installée.
# Si ce n'est pas le cas, il faudra l'installer manuellement
# Avec par exemple : brew install rclone

declare -a folders_to_sync_ARRAY=("Folder1" "Folder2" "1 Folder" "TFolder" "TFolderd" "Folder_v3" "TSFolder")

rclone_log_file="rclone_cours_XXXXX-$(date +%Y-%m-%d--%Hh%Mm%Ss).log"

rclone_exit_code_check() {
    # List of exit codes
    #     0 - success
    #     1 - Syntax or usage error
    #     2 - Error not otherwise categorised
    #     3 - Directory not found
    #     4 - File not found
    #     5 - Temporary error (one that more retries might fix) (Retry errors)
    #     6 - Less serious errors (like 461 errors from dropbox) (NoRetry errors)
    #     7 - Fatal error (one that more retries won't fix, like account suspended) (Fatal errors)
    #     8 - Transfer exceeded - limit set by --max-transfer reached
    #     9 - Operation successful, but no files transferred

    exit_code="$1"
    case $exit_code in
    "0")
        printf "\n\tExit code = 0 - success\n"
        erreur_rclone="0"
        ;;

    "1")
        printf "\n\tExit code = 1 - Syntax or usage error.\n"
        erreur_rclone="erreur"
        ;;

    "2")
        printf "\n\tExit code = 2 - Error not otherwise categorised\n"
        erreur_rclone="erreur"
        ;;

    "3")
        printf "\n\tExit code = 3 - Directory not found\n"
        erreur_rclone="erreur"
        ;;

    "4")
        printf "\n\tExit code = 4 - File not found\n"
        erreur_rclone="erreur"
        ;;

    "5")
        printf "\n\tExit code = 5 - Temporary error (one that more retries might fix) (Retry errors)\n"
        erreur_rclone="erreur"
        ;;

    "6")
        printf "\n\tExit code = 6 - Less serious errors (like 461 errors from dropbox) (NoRetry errors)\n"
        erreur_rclone="erreur"
        ;;

    "7")
        printf "\n\tExit code = 7 - Fatal error (one that more retries won't fix, like account suspended) (Fatal errors)\n"
        erreur_rclone="erreur"
        ;;

    "8")
        printf "\n\tExit code = 8 - Transfer exceeded - limit set by --max-transfer reached\n"
        erreur_rclone="erreur"
        ;;

    "9")
        printf "\n\tExit code = 9 - Operation successful, but no files transferred\n"
        erreur_rclone=$erreur_rclone+0
        ;;

    *)
        printf "\n\tCode Exit inconnu %d = Arrêt immédiat du script.\n" $exit_code
        exit 1
        ;;
    esac

}

# rclone_log_file="blabla.log"
printf "\n---- Début des commandes rclone du jour ----\n" >>~/$rclone_log_file

erreur_rclone="0"

for i in "${folders_to_sync_ARRAY[@]}"; do
    echo "Dossier qui va être synchronisé : $i"
    SOURCE=Google-Drive-Pro:/"$i"
    DESTINATION=~/"Nextcloud/ZZZZZZZZ/XXXXXX/$i"
    printf "\t--> rclone du dossier %s\n" $SOURCE >>~/$rclone_log_file

    rclone sync --delete-excluded --log-file ~/$rclone_log_file --exclude '{~*,.DS_Store}' --progress -v $SOURCE $DESTINATION
    rclone_exit_code_check $?
    printf "\n\n"

done
printf "\n---- Fin des commandes rclone du jour ----\n" >>~/$rclone_log_file

if (( $erreur_rclone != 0 )); then
    printf "\nIl y a eu au moins un code d'erreur pendant les commandes rclone. La sauvegarde CCC ne se fera pas. Vérifier via les logs ci-dessus.\n"
    exit 1
else
    exit 0
fi

exit 0


Quelqu'un pourrait-il me dire ce qui ne va pas ?
Merci d'avance ;)