Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/12/2023, à 13:04

Jarodd

[Résolu] Script bash : OK en manuel, KO en crontab

Bonjour,

Je suis en train de me faire un petit script en bash, qui se connecte sur un serveur en ssh, puis effectue un rsync pour synchroniser des fichiers avec mon système local (je voudrais faire une sauvegarde quotidienne).

Le script.sh :

#!/bin/bash
rsync -rltvh --modify-window=1 -e "ssh -i /home/jarodd/.ssh/id_ed25519" root@192.168.1.88:/path/to/files/ /home/jarodd/Bureau/backup/

Quand je l'exécute manuellement, les fichiers sont bien synchronisés :

$ ./script.sh 
receiving incremental file list
./
(liste des fichiers synthcorinsés)

sent 158 bytes  received 18,77K bytes  12,62K bytes/sec
total size is 334,03M  speedup is 17.643,66

Mais si je mets le script en crontab (j'ai supprimé les fichiers locaux pour être certain qu'il y a du contenu à synchroniser), j'ai une erreur de permission :
crontab :

30     10      *       *       *        /bin/bash /home/jarodd/Bureau/script.sh > /home/jarodd/Bureau/script.log 2>&1

script.log :

Permission denied, please try again.
Permission denied, please try again.
root@192.168.1.88: Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(231) [Receiver=3.2.7]

Je vois "publickey" dans le message d'erreur. J'ai généré une clé dans /home/jarodd/.ssh/id_ed25519 que j'ai copié sur le serveur qui contient les fichiers à synchroniser.
Je pense que cela est correct, car sinon pourquoi le script arriverait à se connecter et à synchroniser les fichiers en lançant le script manuellement ?
Bref je ne comprends pas, et je ne sais pas comment le corriger (je suis assez débutant dans ce genre de scripts + paramétrage).

Merci pour votre aide.

Dernière modification par Jarodd (Le 10/12/2023, à 15:25)


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#2 Le 10/12/2023, à 13:39

bruno

Re : [Résolu] Script bash : OK en manuel, KO en crontab

Bonjour,

Où est la ligne du crontab ?


Attention, les bouteilles vendues par Nestlé Waters sont contaminées au monoxyde de dihydrogène.

Hors ligne

#3 Le 10/12/2023, à 13:43

Jarodd

Re : [Résolu] Script bash : OK en manuel, KO en crontab

J'ai fait :

crontab -e

et j'ai ajouté une ligne à la fin du fichier. J'ai d'autres scripts ici, qui fonctionnent bien.


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#4 Le 10/12/2023, à 13:53

bruno

Re : [Résolu] Script bash : OK en manuel, KO en crontab

Ok est-ce que ta clé privée est protégée par une phrase de passe ?

Si c'est le cas cela peut marcher quand tu es dans un shell interactif connecté en tant que jarodd (grâce à ssh-agent et au gestionnaire de mots de passe) mais pas dans une tâche cron.
La solution est de supprimer la phrase de passe de ta clé privée :

ssh-keygen -p -P 'ancienne_phrase_de_passe' -N '' -f /home/jarodd/.ssh/id_ed25519

Dernière modification par bruno (Le 10/12/2023, à 14:03)


Attention, les bouteilles vendues par Nestlé Waters sont contaminées au monoxyde de dihydrogène.

Hors ligne

#5 Le 10/12/2023, à 15:25

Jarodd

Re : [Résolu] Script bash : OK en manuel, KO en crontab

C'était bien ça, merci Bruno !


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne