#1 Le 10/12/2023, à 12: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, à 14:25)
Ubuntu 22.04.3 LTS (64 bits)
Hors ligne
#2 Le 10/12/2023, à 12:39
- bruno
Re : [Résolu] Script bash : OK en manuel, KO en crontab
Bonjour,
Où est la ligne du crontab ?
#3 Le 10/12/2023, à 12: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, à 12: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, à 13:03)
#5 Le 10/12/2023, à 14: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