Lancement crontab

Bonjour, je tente de lancer un script avec crontab.

Le script se lance mais il ne recupère pas ce que je lui demande, alors que si je le lance en root ou utilisateur il recupere bien des bases de données sur un serveur, c’est le principe du script.
Par crontab -e, les fichiers sont vides.

 */10 * * * * /usr/local/bin/uploadSAUVSQL.sh

Il y a bien une différence d’autorisation du script avec un utilisateur et crontab qui est peut etre plus exigeant.

ls -l /usr/local/bin/uploadSAUVSQL.sh
-rwxr-xr-x 1 root staff 1957 janv.  2 11:04 /usr/local/bin/uploadSAUVSQL.sh

Le script c’est : la commande ssh + upade sql + copie de la base dans un fichier avec la date.

DATE=$(date +%d-%m-%Y-%H-%M)
ssh -Co CompressionLevel=9 -p 2223 root@serveur.free.fr "mysqldump  -unomserveur -ppaswd  base client" > /home/utilisateur/SAUVSQL/client${DATE}.sql

Je confirme que ca marche en root ou utilisateur en lancant le script dans une console par son nom updateSAUVSQL.sh

Tu veux faire quoi au juste ? Lancer /usr/local/bin/uploadSAUVSQL.sh toutes les dix minutes ?

non, c’est pour les tests, je suis pas parano :grinning:

J’ai mis le script dans mon home pour tenter & j’ai aussi les fichiers vides, or si je lance ce script dans une console ca fonctionne bien
qu’est ce qui peut faire que cron n’autorise pas le ssh mysql

Tu le lances en tant que quel utilisateur ? As-tu un mot de passe à taper ?

Non, j’utilise une clé publique.
j’utilise soit root soit moi, les deux fonctionnent
C,est juste via cron que les fichiers ne se remplissent pas des données sql[quote=“Lissteck, post:1, topic:72202”]
DATE=$(date +%d-%m-%Y-%H-%M)
ssh -Co CompressionLevel=9 -p 2223 root@serveur.free.fr “mysqldump -unomserveur -ppaswd base client” > /home/utilisateur/SAUVSQL/client${DATE}.sql
[/quote]

Tu peux ajouter cette ligne dans le ficheir /etc/crontab :

*/10 * * * * root /usr/local/bin/uploadSAUVSQL.sh

Tu t’y retrouveras plus facilement si tu mets tes tâches planifiées du système dans ce fichier.
Note également l’ajout d’une colonne dans ce fichier dans lequel j’ai mis root. Tu peux remplacer ce root par un autre utilisateur du système, la tâche sera exécutée en tant que l’utilisateur défini à cette endroit.

1 J'aime

Oui, c’est vrai que dans mon exemple il n’ai pas, mais c’est a force de tenter des trucs.
Avec crontab, il ne veut pas la ligne, ni de root ni de l’utilisateur

J’ai déja essayer avec /etc/crontab mais c’est la meme chose le fichier de destination est vide avec “root”

Par contre si je met mon nom d’utilisateur , voila que ca fonctionne. y a bien un truc que “root” ne sait pas faire avec /etc/crontab
mais ca me va, on va pas chercher plus , pas grave que root soit nul :joy:

Voilà une subtilité qui m’a amené vers vous. le plus surprenant est que sur le serveur ca marche avec /etc/crontab avec le “root”

Merci Almtesh