GNU/Linux >> Linux Esercitazione >  >> Linux

Non riesci a ottenere il codice di uscita corretto da uno script?

Ho uno script che si collega a un server remoto tramite SFTP e ottiene un file da lì. Il mio script va così:

/usr/bin/sftp [email protected] <<EOF
lcd /dir1/dir2/dir3
cd /rsdir1/rsdir2/rsdir3
get file_pattern`date -d "last month" +%m%Y`.csv
EOF
rc=$?
        if [[ $rc != 0 ]]
           then
        echo "Error occured getting file and the script abended with error code $rc" `date "+%Y-%m-%d-%H.%M.%S"`
            exit 1
    else
    echo "Successfully transferred the file" `date "+%Y-%m-%d-%H.%M.%S"`
        fi

Tuttavia, anche se lo script non trova il file con il pattern, va in altro parte dello script e mi dà l'output sullo schermo come

Connecting to remote.server.com...
sftp> lcd /dir1/dir2/dir3
sftp> cd /rsdir1/rsdir2/rsdir3
sftp> get file_pattern032014.csv
Couldn't stat remote file: No such file or directory
File "/rsdir1/rsdir2/rsdir3/file_pattern032014.csv" not found.
Successfully transferred the file YYYY-MM-DD-24HH.MI.SS 

Qualche consiglio su cosa potrei sbagliare qui?

Risposta accettata:

Hai il codice di ritorno corretto, la sessione sftp è stata eseguita correttamente quindi il codice di ritorno è 0.
Dovresti usare scp invece, non restituisce 0 se non riesce a copiare.

Potresti fare qualcosa come :

file=file_pattern`date -d "last month" +%m%Y`.csv 
[email protected]:/rsdir1/rsdir2/rsdir3/$file
local=/rsdir1/rsdir2/rsdir3/$file

if scp -q $remote $local
then
    echo "Successfully transferred the file" `date "+%Y-%m-%d-%H.%M.%S"`
else
    echo "Error occured getting file and the script abended with error code $?" `date "+%Y-%m-%d-%H.%M.%S"`
    exit 1
fi

EDIT:ho cambiato la destinazione della copia in un nome file:se copi in una directory e quella directory manca, creerai un file con il nome della directory.


Linux
  1. Ottieni la dimensione di un file remoto dal terminale?

  2. Come ottenere il percorso del file corrente (pwd) in Linux da C?

  3. Come ottengo la directory assoluta di un file in bash?

  4. Ottieni una riga specifica dal file di testo usando solo lo script della shell

  5. restituire il valore dallo script python allo script shell

Come ottenere il nome del file dal percorso completo in Linux

Script Bash per rimuovere il file più vecchio da una cartella?

Bash + Come uscire dallo script secondario e dallo script principale in entrambi i casi?

Impossibile ottenere Atom Text Editor dal Software Center?

Come posso ottenere la lunghezza di un file video dalla console?

Script Bash per rimuovere il file più vecchio da una cartella