Consenso all'uso dei cookies

SITO1 -- SITO2 -- Forum1 -- CercaGlobale -- Informativa su Cookie e Privacy


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Uscita dallo script in caso di errore
#1
Buona sera a tutti,
Avrei bisogno del vostro aiuto per il perfezionamento di uno script.
la situazione è la seguente:
- due NAS in cui ci sono n cartelle di rete;
- il primo NAS master e il secondo slave su cui viene salvata una copia con rsync;
- il nome delle cartelle è identico.
Lo script funziona, e compie i seguenti passaggi:
1 definisce il percorso di una cartella per il file di log;
2 controlla se la cartella non esiste e la crea;
3 definisce il file di log(composto dalla data in cui viene fatto);
4 controlla se le cartelle locali in /media/ su cui saranno montate le cartelle di rete esistono altrimenti le crea;
5 monta la cartella direte sorgente (da cui vengono copiati i dati);
6 monta la cartella di rete di destinazione (su cui vengono copiati i dati);
7 con il comando rsync copia i dati da sorgente a destinazione.
Lo script funziona fino a quando non c'è un problema di rete, come ad esempio una risorsa non disponibile, per che nonostante l'errore continua a copiare i dati nelle cartella montate, fino a quando non si esaurisce lo spazio del sistema operativo.
Vorrei mettere una condizione nel momento in cui vado a montare la risorsa tipo:
if "mount......... " da errore scrivilo nel file errori, esci e passa all'istruzione successiva.
Però non riesco a farlo.
Poterste aiutarmi per favore??
in allegato lo script in questione

Codice:
#!/bin/bash
#Prova di script copia file

Directory_log=/media/LogNAS

if [ ! -d "$Directory_log" ]; then
mkdir $Directory_log
fi


Log=$Directory_log/"Log_prova_del_`date +%d%m%y`".txt

echo "bkp prova del giorno `date +%y%m%d`" >>$Log


if [ ! -d /media ]; then
mkdir /media
fi
if [ ! -d /media/54 ]; then
mkdir /media/master
fi

if [ ! -d /media ]; then
mkdir /media
fi
if [ ! -d /media/246 ]; then
mkdir /media/slave
fi


Directory_sorgente=/media/master/cartella1
Directory_destinazione=/media/slave/cartella1


if [ ! -d "$Directory_sorgente" ]; then
mkdir $Directory_sorgente
fi

if [ ! -d "$Directory_destinazione" ]; then
mkdir $Directory_destinazione
fi


sudo mount -t cifs -o username=admin,password=password,gid=1000,uid=1000,sec=ntlm,vers=1.0 //172.178.0.213/cartella1 $Directory_sorgente

sudo mount -t cifs -o username=admin,password=BOCCAPIENA,gid=1000,uid=1000,sec=ntlm,vers=1.0 //172.178.0.245/cartella1 $Directory_destinazione

echo "cartella1  inizio copia `date`" >>$Log
rsync -avd --delete $Directory_sorgente/ $Directory_destinazione/ >> $Log
echo "cartella1 fine copia `date`" >>$Log

umount $Directory_sorgente
umount $Directory_destinazione

echo "*************************" >>$Log
echo  >>$Log




Directory_sorgente=/media/master/cartella2
Directory_destinazione=/media/slave/cartella2


if [ ! -d "$Directory_sorgente" ]; then
mkdir $Directory_sorgente
fi

if [ ! -d "$Directory_destinazione" ]; then
mkdir $Directory_destinazione
fi


sudo mount -t cifs -o username=admin,password=password,gid=1000,uid=1000,sec=ntlm,vers=1.0 //172.178.0.213/cartella2 $Directory_sorgente

sudo mount -t cifs -o username=admin,password=BOCCAPIENA,gid=1000,uid=1000,sec=ntlm,vers=1.0 //172.178.0.245/cartella2 $Directory_destinazione

echo "cartella1  inizio copia `date`" >>$Log
rsync -avd --delete $Directory_sorgente/ $Directory_destinazione/ >> $Log
echo "cartella1 fine copia `date`" >>$Log

umount $Directory_sorgente
umount $Directory_destinazione

echo "*************************" >>$Log
echo  >>$Log
Cita messaggio
Grazie da:
#2
La butto lì perché usare if mount mi sembra una buona idea.
Potresti provare a usare l'output confrontandone il contenuto co la stringa che cerchi.
Con mount vedi cosa è montato e con grep restringi il campo di ricerca.

E come al solito la sintassi... è un'altra storia
Cita messaggio
Grazie da: ariex
#3
grazie zafran

Per ora ho risolto e sembra funzionare.
se avete suggeriementi

Codice:
if ping -c 2 172.178.0.213 | grep ttl ; then
echo "nas 172.178.0.213 master on line" >>$Log
    if ping -c 2 172.178.0.245 | grep ttl ; then
        echo "nas 172.178.0.245 slave on line" >>$Log
        sudo mount -t cifs -o username=admin,password=password,gid=1000,uid=1000,sec=ntlm,vers=1.0 //172.178.0.213/cartella1 $Directory_sorgente
        sudo mount -t cifs -o username=admin,password=password,gid=1000,uid=1000,sec=ntlm,vers=1.0 //172.178.0.245/cartella1 $Directory_destinazione
        echo "cartella cartella1 `date`" >>$Log
        rsync -avd --delete $Directory_sorgente/ $Directory_destinazione/ >> $Log
        echo "cartella cartella1 fine `date`" >>$Log
        umount $Directory_sorgente
        umount $Directory_destinazione
    else echo "nas 172.178.0.245 slave non montato" >>$Log
    fi
else echo "nas 172.178.0.213 master non montato" >>$Log
fi
Cita messaggio
Grazie da:


Vai al forum:


Utenti che stanno guardando questa discussione: 1 Ospite(i)