Script ne fonctionne pas avec crontab

Bonjour,

J’ai un serveur de base de données et un serveur FTP. J’essaye de tranférer une sauvegarde de la base de données avec crontab du serveur BDD vers le serveur FTP avec un script mais cela ne fonctionne pas. Lorsque j’exécute le script manuellellement, ça marche

Voici mon script (nom du script : essai.sh) :

#!/bin/bash

constantes

echo 'bonjour’
date > /dev/pts/3
cp /var/log/syslog /var/log/toto
HOST=192.168.132.8
LOGIN=azerty
PASSWORD=azerty
PORT=21

le transfet lui meme

ftp -i -n $HOST $PORT << END_SCRIPT
quote USER $LOGIN
quote PASS $PASSWORD
pwd
bin
put gsb.tar.gz
quit
END_SCRIPT

Dans crontab :

03 09 16 11 7 /var/lib/automysqlbackup/daily/essai.sh

Merci d’avance.

Quelques pistes : le script est bien éxécutable?

Tu veux qu’il soit éxécuté à quel moment? Parce que 03 09 16 11 7, c’est quand même très précis!

Salut,

[quote=“Chris552”]Dans crontab :

[mono]03 09 16 11 7 /var/lib/automysqlbackup/daily/essai.sh[/mono]

[/quote]

Que vient faire ce script en [mono][strike]/var/lib/automysqlbackup/[/strike][/mono] ?

[mono]/var/lib/automysqlbackup/[/mono], qui se trouve être le répertoire (par défaut) de stockage des sauvegardes. ([mono]monthly[/mono]; [mono]weekly[/mono]; [mono]daily[/mono])

Plutôt que [mono]/usr/local/bin/[/mono] ?

PS : pour ton information.

01 * * * * root echo "cette commande est exécutée toutes les heures passées d'une minute"
17 8 * * * root echo "Cette commande est exécutée tous les jours à 08h17"
17 20 * * * root echo "Cette commande est exécutée tous les jours à 20h17"
00 4 * * 0 root echo "Cette commande est exécutée tous les dimanches à 4h00"
* 4 * * Sun root echo "Celle ci aussi"
42 4 1 * * root echo "Cette commande est exécutée tous les 1er du mois à 4h42"
01 * 19 07 * root echo "Cette commande est exécutée toutes les heures passées d'une minute tous les 19 Juillet"

Tout d’abord merci pour vos réponses rapides. J’ai mis /var/lib/automysqlbackup/daily/essai.sh car c’est dans ce dossier qu’est situé le script. Lorsque je l’exécute manuellement (./essai.sh), ça marche.

A noter que j’arrive à sauvegarder ma base en local avec crontab (01 09 16 11 7 /usr/sbin/automysqlbackup)

C’est faux.
Le cron journalier se situe en [mono]/etc/cron.daily/automysqlbackup[/mono] qui lance [mono]/usr/sbin/automysqlbackup[/mono].
Ton script [mono]essai.sh[/mono] n’a strictement rien à faire en ce lieu.

[mono]$ man bash[/mono]

[quote][…]

Si bash est appelé sous le nom sh, il essaye d’imiter le comportement de démarrage des versions historiques de sh aussi fidèlement que possible, tout en restant conforme aux spécifications POSIX.
Lorsqu’il est appelé comme interpréteur de commandes de connexion interactif ou non interactif avec l’option --login, il essaye d’abord de lire et exécuter, dans cet ordre, les commandes de /etc/profile puis de ~/.profile.
L’option --noprofile peut être utilisée pour empêcher ce comportement.
Quand il est appelé en tant qu’interpréteur interactif sous le nom sh, bash consulte la variable ENV, développe sa valeur si elle est définie et utilise le résultat en tant que nom de fichier à lire et exécuter.
Comme un interpréteur appelé sous le nom sh n’essaye ni de lire, ni d’exécuter des commandes d’un autre fichier de démarrage, l’option --rcfile n’a aucun effet.
Un interpréteur non interactif appelé sous le nom sh n’essaie de lire aucun autre fichier d’initialisation.

Quand il est appelé sous le nom sh, bash entre en mode posix après avoir lu les fichiers d’initialisation.

[…][/quote]

[code]$ cat /etc/profile

/etc/profile: system-wide .profile file for the Bourne shell (sh(1))

and Bourne compatible shells (bash(1), ksh(1), ash(1), …).

if [ “id -u” -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

[/code]

[code][10:17:15] ~ # echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/pear/bin
[10:17:16] ~ #

[/code]

[mono]$ man sh[/mono]

[quote]NOM
bash - Interpréteur de commandes GNU Bourne-Again SHell

DESCRIPTION

Bash est un interpréteur de commandes (shell) compatible sh qui exécute les commandes lues depuis l’entrée standard ou depuis un fichier.
Bash inclut aussi des fonctionnalités utiles des interpréteurs de commandes Korn et C (ksh et csh).

Bash lit et exécute les commandes depuis ce fichier, puis termine. L’état final de bash est l’état final de la dernière commande exécutée dans le script.
Si aucune commande n’a été exécutée, l’état final est 0. Une tentative est d’abord faite de trouver le fichier dans le répertoire actuel et, si aucun fichier n’est trouvé, l’interpréteur cherche le script dans les répertoires contenus dans PATH.

[…]
[/quote]