Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
Archive de la liste aide - [Aide] petit souci sur un script bash
Hello,

Le 2015-04-06 13:36, benoit a écrit :
> Bonjour,
> J'ai un petit souci avec un script qui fait mes sauvegardes. Mon
> objectif est de relancer rsync en cas de coupure de la connexion.

Ce que tu sembles faire:
Tu lances le rsync et tu affiches l'état puis tu quittes la boucle infine ?

Ce que j'imagine que tu veux faire:
Tu lances le script de sauvegarde et tant que le statut de sortie n'est
pas '0' tu recommences le rsync.

Comme Peko a déjà exposé, il y a plusieurs problèmes, dont le principal
est le test du if.

> while [ 1 ]
> do
>     rsync $OPTIONS $DIRS zelec at 192.168.5.104:/home/zelec
>     if [ "$?"="0" ] ; then
>         echo "ok"
>         exit
>     else
>         echo "pas ok"
>         exit
>     fi
> done
> 
> 
> Problème, li if ne vérifie pas la condition et passe toujours au then
> Sachant que echo $? me retourne bien des codes différents de 0 en cas
> d'erreur.

Pour cette erreur en particulier, le '=' sans espaces est la cause du
problème. Aussi tester du texte quand tu sais que tu vas avoir un
chiffre ce n'est pas idéal. Dans ce cas '-eq' (equal) ou '-ne' (not
equal) est indiqué.

Il est tard dans cette partie du globe, je vais donc te proposer 2
scripts un poil plus efficaces:

-- code --
#!/usr/bin/env bash

OPTIONS="tes options pour rsync"
DIRS="liste de tes dossiers"
REMOTE="zelec at 192.168.5.104:/home/zelec"

exit_status=1
while [ ${exit_status} -ne 0 ]
do
  rsync ${OPTIONS} ${DIRS} ${REMOTE}
  exit_status=${?}
done
echo "sauvegarde terminée"
-- code --

Ou si tu veux vraiment une boucle infinie:

-- code --
#!/usr/bin/env bash

OPTIONS="tes options pour rsync"
DIRS="liste de tes dossiers"
REMOTE="zelec at 192.168.5.104:/home/zelec"

while true
do
  rsync ${OPTIONS} ${DIRS} ${REMOTE} && echo "ok" || echo "pas ok"
done
-- code --

Si tu as besoin de d'explications, n'hésite pas à récrire.

> Merci
> Benoit

À +++

R. Daneel Olivaw,
The Human Robot Inside.


Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons