GNU/Linux >> Tutoriales Linux >  >> Linux

¿No puede obtener el código de salida correcto de un script?

Tengo un script que se conecta a un servidor remoto a través de SFTP y obtengo un archivo desde allí. Mi guión es así:

/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

Sin embargo, incluso si el script no encuentra el archivo con el patrón, va a else parte del script y me da la salida en la pantalla como

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 

¿Algún consejo sobre lo que podría estar haciendo mal aquí?

Respuesta aceptada:

Obtuvo el código de retorno correcto, la sesión sftp se ejecutó correctamente, por lo que el código de retorno es 0.
Debe usar scp en cambio, no devuelve 0 si no se puede copiar.

Podrías hacer algo como:

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

EDITAR:Cambié el destino de la copia a un nombre de archivo:si copia a un directorio y falta ese directorio, creará un archivo que tiene el nombre del directorio.


Linux
  1. Bash Script para eliminar el archivo más antiguo de una carpeta?

  2. ¿Cómo quitar el Bom de un archivo Utf-8?

  3. ¿Cómo obtener más información sobre el origen de un código de salida?

  4. Bash + ¿Cómo salir del script secundario y del script principal en ambas ocasiones?

  5. Obtener el tamaño de un archivo remoto desde la terminal?

Cómo obtener el nombre de archivo de la ruta completa en Linux

¿No puede obtener Atom Text Editor desde el Centro de software?

obtenga los primeros 5 caracteres de cada línea en el script de shell

¿Cómo puedo obtener la duración de un archivo de video desde la consola?

¿Cómo obtener la URL del archivo de Dropbox desde la línea de comando?

Bash script para eliminar el archivo más antiguo de una carpeta