problème d'exécution d'un script bash en cron ou via bacula

2 réponses
Avatar
l3w0rM
Bonjour à tous
j'ai un script bash qui fonctionne bien quand je le lance "à la main" :
./BeforeJobs.sh
quand ce dernier est appelé par bacula j'ai l'erreur :
ClientRunBeforeJob: /etc/scripts/bacula/BeforeJob.sh: 15: Syntax error:
"(" unexpected
Pour vérifier le problème j'ai mis mon script dans cron j'ai la même
erreur : /etc/scripts/bacula/BeforeJob.sh: 15: Syntax error: "(" unexpected

à priori cela coinse au niveau de mon tableau j'ai essaye les ecritutres
suivante trouvée sur le web :
avec ou sans espace entre la parenthèse et le premier caractère à
l'intérieur de cette dernière ( idem à la fin de la parenthèse )
=> Tableau=([1]="postgres [2]="template1" [3]="mantis" [4]="dbnl51"
[5]="ipplan")
=> Tableau=(postgres template1 mantis dbnl51 ipplan)
=> declare -a Tableau=([1]="postgres [2]="template1" [3]="mantis"
[4]="dbnl51" [5]="ipplan")
=> declare -a Tableau=(postgres template1 mantis dbnl51 ipplan)

voici mon script

#
#
#

#!/bin/sh

# Constantes chemin des répertoires
DirTmp=/data/BckPostgres
DirFinal=/data/BckDbs
DirTime=/etc/scripts

export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Constantes bases
# Mettre dans le tableau le nom de la base de donnée [son_numero]=nom_base
Tableau=( [1]=postgres [2]=template1 [3]=mantis [4]=dbnl51 [5]=ipplan )
NbElement=${#Tableau[@]}

#login
User=postgres

echo '################################################'
echo '# Debut Pré-install #'
echo '################################################'

echo "Mise à jour de l'heure"
$DirTime/time.sh

echo 'Supression de la dernière sauvegarde'
cd $DirFinal
rm *.gz
echo 'Suppression terminée'

if [ -d $DirTmp ] ; then
echo -e "Le répertoire $DirTmp existe"
else
echo -e "Le répertoire $DirTmp n'existe pas : création de ce dernier"
mkdir -p $DirTmp
chown -R postgres $DirTmp
fi

echo "Nombre de bases à sauvegarder : '$NbElement' ."

# Dump des databases chaud
echo "Sauvegarde intégrale des bases"
for i in ${!Tableau[*]}
do
Base=${Tableau[$i]}
su $User -c "pg_dump -E='UTF8' --create -o $Base --file=$DirTmp/$Base.`date +%d-%m-%y`.sql"
taille=$(ls -alh $DirTmp/$Base.`date +%d-%m-%y`.sql |awk -F" " '{print $5}')
if [ $taille = 0 ] ; then
taille='ERREUR DE SAUVEGARDE'
fi
echo 'DUMP de la base '$Base' effectué taille : '$taille''
done

echo "Sauvegarde des datas uniquement"
for i in ${!Tableau[*]}
do
Base=${Array[$i]}
su $User -c "pg_dump -E='UTF8' -o --data-only $Base --file=$DirTmp/$Base-data.`date +%d-%m-%y`.sql"
taille=$(ls -alh $DirTmp/$Base-data.`date +%d-%m-%y`.sql |awk -F" " '{print $5}')
if [ $taille = 0 ] ; then
taille='ERREUR DE SAUVEGARDE'
fi
echo 'DUMP de la base '$Base' effectué taille : '$taille''
done

echo "Sauvegarde des datas uniquement avec insert"
for i in ${!Tableau[*]}
do
Base=${Array[$i]}
su $User -c "pg_dump -E='UTF8' --data-only --inserts $Base --file=$DirTmp/$Base-data-inser.`date +%d-%m-%y`.sql"
taille=$(ls -alh $DirTmp/$Base-data-inser.`date +%d-%m-%y`.sql |awk -F" " '{print $5}')
if [ $taille = 0 ] ; then
taille='ERREUR DE SAUVEGARDE'
fi
echo 'DUMP de la base '$Base' effectué taille : '$taille''
done

echo "Sauvegarde des schémas uniquement"
for i in ${!Tableau[*]}
do
Base=${Array[$i]}
su $User -c "pg_dump -E='UTF8' -o --schema-only $Base --file=$DirTmp/$Base-schema.`date +%d-%m-%y`.sql"
taille=$(ls -alh $DirTmp/$Base-schema.`date +%d-%m-%y`.sql |awk -F" " '{print $5}')
if [ $taille = 0 ] ; then
taille='ERREUR DE SAUVEGARDE'
fi
echo 'DUMP de la base '$Base' effectué taille : '$taille''
done

#optimisation
echo "Optimisation des dumps sql"
cd $DirFinal
tar -czf DBS_Dump-`date +%m-%d-%y`.tar.gz $DirTmp/*
taille=$(du -sh $DirTmp | awk -F" " '{print $1}')
echo 'Taille des dumps des bases de données : '$taille''
taille=$(ls -alh $DirFinal/DBS_Dump-`date +%m-%d-%y`.tar.gz | awk -F" " '{print $5}')
echo 'Taille du fichier compressé : '$taille''

echo '################################################'
echo '# Fin Pré-install #'
echo '################################################'

Merci de votre aide

philippe



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/4B88D071.4030209@worm-fr.com

2 réponses

Avatar
Grégory Bulot
l3w0rM à écrit le Sat, 27 Feb 2010 08:57: 37
+0100
Bonjour à tous
j'ai un script bash qui fonctionne bien quand je le lance "à la
main" : ./BeforeJobs.sh
quand ce dernier est appelé par bacula j'ai l'erreur :
ClientRunBeforeJob: /etc/scripts/bacula/BeforeJob.sh: 15: Syntax
error: "(" unexpected
Pour vérifier le problème j'ai mis mon script dans cron j'ai la même
erreur : /etc/scripts/bacula/BeforeJob.sh: 15: Syntax error: "("
unexpected




voici mon script

#
#
#

#!/bin/sh



set | grep -i shell=

tu remplace /bin/sh par la réponse de la commande ci-dessus
--

Cordialement
Grégory BULOT

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
l3w0rM
Le 27/02/2010 10:07, Grégory Bulot a écrit :
set | grep -i shell >


j ai remplacé et j'obtient la meme chose :
#!/bin/bash

j'ai toujours l'erreur

dans le même ordre d'idée j ai regarder les variables d'environement
elle sont les memes UTF8 / LATIN1

j'ai toujours l'erreur

merci

philippe



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/