Bonjour,

J'ai un problème avec le script ci dessous. Il parcourt un fichier (bases.txt) contenant des infos sur des base mysql à sauvegarder. Je parcours le fichier ligne par ligne pour récupérer les infos. Le script lit qu'une ligne du fichier et s'arrête. Le problème se situe au niveau de l'appel ssh. Quand j'enlève la commande. le fichier bases.txt est bien lut.
Donc mes questions sont :
Pourquoi sa fait ça ?
Comment corriger le problème ?

Merci


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
33
34
35
36
37
38
39
 
#!/bin/sh
 
cat < bases.txt | grep -v "#" | while true
do
        read ligne
        if [ "$ligne" = "" ]; then break; fi
        set -- $ligne
        HOST=$1
        DBNAME=$2
        USER=$3
        PASSWD=$4
        RETENTION=$5
        FILE=$6
 
        echo -n "backup base $DBNAME"
 
        # Rotate file
        for ((I=$((RETENTION-1));I>=0;I--)); do
                if [ -f "data/${FILE}.gz.${I}" ]; then
                        mv "data/${FILE}.gz.${I}" "data/${FILE}.gz.$((I+1))"
                fi
        done
        if [ -f "data/${FILE}" ]; then
                        gzip "data/${FILE}"
                        mv "data/${FILE}.gz" "data/${FILE}.gz.0"
        fi
        if [ -f "data/${FILE}.gz.$((RETENTION))" ]; then
                rm -f "data/${FILE}.gz.$((RETENTION))"
        fi
 
        # Save database
        ssh $HOST "mysqldump -u${USER} -p${PASSWD} -e -q -Q --add-drop-table ${DBNAME}" > data/$FILE
        RETVAL=$?
        if [ $RETVAL -eq 0 ] ; then
                echo -e "\t[\\033[1;32m  OK  \\033[0;39m]"
        else
                echo -e "\t[\\033[1;31m  FAILED  \\033[0;39m]"
        fi