Ok.
Ho dei dati che vengono estratti da un database mysql.
Questi sono indicizzati da un codice (inserito sempre nel database).
Prima di tutto estraggo i codici da questo database e li salvo in un file.
Poi vado a leggere questo file riga per riga ed estraggo questi dati.
Lo script li manipola e crea un file compresso. Alla fine ho due di questi dati, l’originale ed il compresso.
Lo script salva questi dati in cartelle apposite e, per avere una copia, li salva in un altro computer tramite ssh.
Poi va a leggere la seconda riga e ripete il lavoro.
Il problema è che se archivio i dati sul secondo computer, quando rilegge la riga successiva non valorizza la variabile appositamente creata ed esce dal loop
Se invece non invio i dati al secondo computer, va bene. e rilegge le righe successive.
Ho provato a far girare lo script sia senza che con l’invio dei dati, ed ho visto che se do un solo comando ssh, non continua il loop iniziale
questa la parte incriminata:
Ho tre variabili
$USER dove metto gli utenti del secondo computer separati da ","
$HOST dove metto gli host di destinazione sempre separati da ","
$DEST_FOLDER dove inserisco le cartelle degli altri computer sempre separati da ","
arruser=(`echo $USER | tr "," "\n"`) # estrae gli utenti e li inserisce nell'array arruser
arrhost=(`echo $HOST | tr "," "\n"`)# estrae gli host e li inserisce nell'array arrhost
arrdest_folder=(`echo $DEST_FOLDER | tr "," "\n"`) # estrae le cartelle e le inserisce nell'array arrdest_folder
for (( i=0; i<${#arruser@]}; i++))
do
arr=(`echo "${arrdest_folder$i]}"/sac/$YEAR/$MONTH/$DAY`) # valorizza arr con la cartella di destinazione dell'host seguito da "/sac/anno/mese/giorno"
ssh "${arruser$i]}"@"${arrhost$i]}" "mkdir -p $arr" # tramite ssh da il comando di creare la cartella e le sottocartelle se non esistono
done
Se commento la linea ssh… lo script, alla fine dell’elaborazione della prima riga letta dal file dei codici, lo script legge le righe successive, altrimenti no.
Chiaramente tra i due computer ho generato le chiavi RSA.