Bonjour,
Je réalise mon premier script shell et ce n'est pas facile.
Voici le script que je suis en train de faire :
1) Je met dans un tableau le chemin de tous les dossiers dont j'ai besoin.
2) Je récupère sur un autre serveur la liste des dossiers.
3) Je vérifie que chaque dossiers dont j'ai besoin existe sur l'autre serveur.
Voici mon code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
#!/bin/sh
DATE=`date +%d_%m_%Y`
JOUR=`date +%d`
# je met le chemin de tous les dossiers dont j'ai besoin dans un tableau
tableau=(
"sauvegarde/$DATE/"
"sauvegarde/$DATE/bdd/"
"sauvegarde/$DATE/sites/"
"sauvegarde/$DATE/configuration/"
)
# Je liste tous les dossiers présent sur le serveur de sauvegarde et je les liste dans listing.txt
ssh root@leserveur.net find /sauvegarde/ -type d > /sauvegarde/listing.txt
# Je verifie que chaque dossier dont j'ai besoin est bien créé sur le serveur de sauvegarde
for fichier in ${tableau[@]}
do
if [ grep "$fichier" /sauvegarde/listing.txt ]
then
echo ""
echo "Le dossier existe."
echo ""
else
echo ""
echo "Le dossier n'héxiste pas."
echo ""
fi
done |
L'étape 2 fonctionne et le fichier listing.txt contient :
1 2 3 4 5 6 7 8 9 10 11
|
/sauvegarde/
/sauvegarde/configuration
/sauvegarde/configuration/xx.xxxxxxxx.com
/sauvegarde/configuration/xx.xxxxxxxx.com/etc
/sauvegarde/sites
/sauvegarde/sites/xx.xxxxxxxx
/sauvegarde/sites/xx.xxxxxxxx/img
/sauvegarde/sites/xx.xxxxxxxx/include
/sauvegarde/sites/xx.xxxxxxxx/maj
.....etc |
par contre quand je veux vérifier que chaque ligne du tableau existe dans listing.txt, j'ai le message d'erreur suivant :
./test.sh: line 20: [: sauvegarde/08_08_2013/: binary operator expected
et ce pour chaque ligne du tableau.
Quelqu'un voie t-il ce qui ne va pas.
Merci d’avance.
Partager