GNU/Linux >> Belajar Linux >  >> Linux

Tidak Dapat Mendapatkan Kode Keluar yang Tepat Dari Script?

Saya memiliki skrip yang terhubung ke server jarak jauh melalui SFTP dan mendapatkan beberapa file dari sana. Skrip saya seperti ini:

/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

Namun, meskipun skrip tidak menemukan file dengan pola, skrip akan tetap ke else bagian dari skrip dan memberi saya output di layar sebagai

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 

Adakah saran tentang apa yang mungkin saya lakukan salah di sini?

Jawaban yang Diterima:

Anda mendapatkan kode pengembalian yang benar, sesi sftp dijalankan dengan benar sehingga kode pengembalian adalah 0.
Anda harus menggunakan scp sebagai gantinya, ia tidak mengembalikan 0 jika gagal menyalin.

Anda dapat melakukan sesuatu seperti :

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:Saya mengubah target salin menjadi nama file:Jika Anda menyalin ke direktori dan direktori itu hilang, Anda akan membuat file yang memiliki nama direktori.


Linux
  1. Bash Script Untuk Menghapus File Terlama Dari Folder A?

  2. Bagaimana cara mendapatkan URL file Dropbox dari baris perintah?

  3. Skrip Bash untuk menghapus file terlama dari folder

  1. Bagaimana Mendapatkan Informasi Lebih Lanjut Tentang Asal Usul Kode Keluar?

  2. Dapatkan Ukuran File Jarak Jauh Dari Terminal?

  3. Bagaimana cara mendapatkan path ke file saat ini (pwd) di Linux dari C?

  1. Bagaimana cara mendapatkan direktori absolut dari sebuah file di bash?

  2. Dapatkan baris tertentu dari file teks hanya dengan menggunakan skrip shell

  3. mengembalikan nilai dari skrip python ke skrip Shell