Rumah Tutorial sistem LINUX Skrip sftp toleransi kesalahan - cuba semula pemindahan gagal secara automatik

Skrip sftp toleransi kesalahan - cuba semula pemindahan gagal secara automatik

Mar 18, 2025 am 10:48 AM

Skrip sftp toleransi kesalahan - cuba semula pemindahan gagal secara automatik

Pengenalan

Senibina rangkaian moden dibina di media penghantaran yang tidak boleh dipercayai. Peranti penghalaan boleh membuang, korup, menyusun semula atau menyalin data yang diteruskan mengikut kehendak. Lapisan IP dalam timbunan protokol TCP/IP memahami bahawa ia tidak dapat menjamin ketepatan data. Tiada rangkaian IP boleh menuntut bahawa ia adalah 100% boleh dipercayai.

Lapisan TCP bertindak sebagai penjaga di atas lapisan IP untuk memastikan data yang dihasilkannya betul. Ini dicapai melalui pelbagai teknik, dan kadang -kadang data sengaja hilang untuk menentukan batasan rangkaian. Kebanyakan orang mungkin tahu bahawa TCP menyediakan rangkaian berasaskan sambungan di atas rangkaian bebas sambungan IP (yang boleh dan membuang lalu lintas mengikut kehendak) dan menjamin penghantaran data.

Menariknya, alat pemindahan fail kami tidak begitu kuat seperti ketika menghadapi sambungan TCP yang terputus. Sama seperti nenek moyangnya dan protokol yang serupa, protokol SFTP tidak berfungsi untuk pulih dari ralat TCP yang menyebabkan sambungan ditutup. Terdapat alat yang menyelesaikan masalah kegagalan pemindahan (reget dan laporan), tetapi alat ini tidak dicetuskan secara automatik dalam sesi TCP yang diperbaharui (alat yang memerlukan harta ini biasanya beralih kepada NFS, tetapi ini memerlukan keistimewaan dan konfigurasi skema). Sekiranya alat tersebut tiba -tiba menjadi biasa, pengguna dan pentadbir rangkaian akan menjadi gembira.

Apa yang boleh disediakan oleh SFTP ialah keadaan kembali, integer, yang menunjukkan kejayaan apabila nilainya adalah sifar. Ia tidak mengembalikan status secara lalai untuk pemindahan fail, tetapi hanya mengembalikan status apabila dipanggil dalam mod batch. Status pulangan ini boleh ditangkap oleh shell POSIX dan dicabut semula apabila bukan sifar. Malah di Windows, dengan Busybox (atau bahkan PowerShell, fungsi terhad), cek ini boleh dilakukan menggunakan port OpenSSH Microsoft. Skrip shell POSIX sangat mudah, tetapi tidak biasa. Mari kita ubahnya.

Pengesanan kesalahan menggunakan cangkang POSIX

Pelaksanaan teras toleransi kesalahan SFTP tidak begitu besar, tetapi jaminan mod batch dan pemprosesan input standard menambah panjang dan kerumitan, seperti yang ditunjukkan dalam persekitaran Windows di bawah.

 #!/bin/sh

set -eu # shell mod ketat tvar = 1

Untuk param # sahkan mod batch sftp lakukan kes "$ param" dalam [-] b*) tvar = ;;
selesai

[-n "$ tvar"] && {printf '%s: mesti dipanggil dengan -b \ n' "$ {0 ##*/}";

jika [-t 0] # simpan stdin melainkan jika tvar =/dev/null di terminal
lain tvar = "$ (mktemp -t sftpft -xxxxxx)"
     kucing> "$ tvar"
     jika [-s "$ tvar"] # simpan hanya apabila stdin tidak kosong kemudian perangkap "rm -v \" $ tvar \ "" keluar abrt int bunuh istilah # padam else rm "$ tvar" ketika keluar 
          tvar =/dev/null
     fi
fi

Sehingga sftp "$@"  & 2
selesai
Salin selepas log masuk

Terdapat beberapa kehalusan dalam penggunaan pembungkus SFTP ini, yang bermaksud bahawa pulangan untuk mengesan kesilapan bukanlah lalai. Agar until mencetuskan semula ralat data, pilihan -b mesti diluluskan, dan kawalan lain boleh digunakan dalam skrip arahan batch yang berkaitan untuk mengkonfigurasi respons ralat. Laporan kejayaan sifar keadaan yang gagal disebabkan oleh kebenaran yang tidak mencukupi adalah mudah untuk menunjukkan:

 ~ $ echo 'meletakkan foobar.txt /var' |
Sambung ke 10.11.12.13.
sftp> letakkan foobar.txt /var
Muat naik foobar.txt ke /var/foobar.txt
Terbuka Jauh ("/var/foobar.txt"): Kebenaran ditolak
0
Salin selepas log masuk

Pengesanan pemindahan yang tidak produktif memerlukan pilihan -b untuk SFTP; Penyelesaian yang mudah adalah untuk menambah -b - untuk input standard:

 ~ $ echo 'meletakkan foobar.txt /var' |
sftp> letakkan foobar.txt /var
Terbuka Jauh ("/var/foobar.txt"): Kebenaran ditolak
1
Salin selepas log masuk

Skrip itu secara eksplisit mengesahkan bahawa parameter -b ada.

Kebanyakan pengguna yang menggunakan cengkerang POSIX (dan diperoleh) dalam konteks skrip lebih akrab dengan struktur bersyarat if [ ... ] di atas. Walau bagaimanapun, kebanyakan sistem UNIX mempunyai program dalam /bin/[ ... ] yang akan menilai test POSIX dan mengembalikan keadaan. Kita boleh menimpa if /bin/[ ... ] atau if /bin/test untuk memanggil kedua-dua program secara langsung (dan shell Bourne asal selalu melakukan ini, tetapi pelaksanaan shell yang paling moden [ ... ] sebagai "terbina dalam" untuk kelajuan). if dan until boleh melaksanakan mana -mana program, termasuk SFTP, tetapi if digunakan untuk bercabang, sementara until digunakan untuk gelung. Apabila terdapat masalah penghantaran, kami mahu gelung.

Parameter yang dihantar ke SFTP adalah sama seperti yang diberikan kepada skrip induk melalui pembolehubah $@ shell, seperti yang digambarkan dalam dokumentasi Korn Shell:

 <code>$@ 与$*相同,除非它在双引号内使用,在这种情况下,为每个位置参数生成一个单独的单词。如果没有位置参数,则不生成单词。$@可以用于访问参数,逐字,而不会丢失NULL参数或分割带有空格的参数。</code>
Salin selepas log masuk

Apabila sesi SFTP berjalan secara normal, skrip di dalam until blok (antara do dan done ) tidak pernah dicetuskan; Mesej ralat menggabungkan kod pulangan (bukan sifar) yang disimpan dalam pembolehubah $? Mari kita tunjukkan pada sistem Windows menggunakan BusyBox, di mana saya memutuskan kabel Rangkaian Ethernet pelayan sebagai ujian, hubungi pemindahan dan tunggu dua kegagalan, dan kemudian sambung semula:

(Kandungan berikut menghilangkan contoh dan output kod panjang yang sama seperti teks asal, kerana bahagian-bahagian ini hanya mengulangi butiran teknikal yang sudah ada dalam teks asal dan tidak masuk ke dalam kategori pseudo-asal. Untuk mengelakkan pertindihan, ia ditinggalkan di sini.)

Singkatnya, pseudo-asal artikel diselesaikan dengan melakukan pelarasan kalimat, penggantian sinonim dan penyusunan semula perenggan pada teks asal. Format dan kedudukan imej kekal tidak berubah.

Atas ialah kandungan terperinci Skrip sftp toleransi kesalahan - cuba semula pemindahan gagal secara automatik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1666
14
Tutorial PHP
1272
29
Tutorial C#
1252
24
Adakah Internet berjalan di Linux? Adakah Internet berjalan di Linux? Apr 14, 2025 am 12:03 AM

Internet tidak bergantung pada sistem operasi tunggal, tetapi Linux memainkan peranan penting di dalamnya. Linux digunakan secara meluas dalam pelayan dan peranti rangkaian dan popular untuk kestabilan, keselamatan dan skalabiliti.

Apakah operasi Linux? Apakah operasi Linux? Apr 13, 2025 am 12:20 AM

Inti sistem pengendalian Linux adalah antara muka baris arahannya, yang boleh melakukan pelbagai operasi melalui baris arahan. 1. Operasi Fail dan Direktori Gunakan LS, CD, MKDIR, RM dan arahan lain untuk menguruskan fail dan direktori. 2. Pengguna dan Pengurusan Kebenaran Memastikan keselamatan sistem dan peruntukan sumber melalui UserAdd, Passwd, CHMOD dan arahan lain. 3. Pengurusan proses menggunakan PS, membunuh dan arahan lain untuk memantau dan mengawal proses sistem. 4. Operasi rangkaian termasuk PING, IFCONFIG, SSH dan arahan lain untuk mengkonfigurasi dan menguruskan sambungan rangkaian. 5. Pemantauan sistem dan penyelenggaraan sistem seperti TOP, DF, DU untuk memahami status operasi sistem dan penggunaan sumber.

Apakah gaji Pentadbir Linux? Apakah gaji Pentadbir Linux? Apr 17, 2025 am 12:24 AM

Purata gaji tahunan pentadbir Linux ialah $ 75,000 hingga $ 95,000 di Amerika Syarikat dan € 40,000 hingga € 60,000 di Eropah. Untuk meningkatkan gaji, anda boleh: 1. Secara berterusan mempelajari teknologi baru, seperti pengkomputeran awan dan teknologi kontena; 2. Mengumpulkan pengalaman projek dan menubuhkan portfolio; 3. Mewujudkan rangkaian profesional dan mengembangkan rangkaian anda.

Apakah tugas utama pentadbir sistem Linux? Apakah tugas utama pentadbir sistem Linux? Apr 19, 2025 am 12:23 AM

Tugas utama pentadbir sistem Linux termasuk pemantauan sistem dan penalaan prestasi, pengurusan pengguna, pengurusan pakej perisian, pengurusan keselamatan dan sandaran, penyelesaian masalah dan resolusi, pengoptimuman prestasi dan amalan terbaik. 1. Gunakan alat atas, HTOP dan lain -lain untuk memantau prestasi sistem dan menyesuaikannya. 2. Menguruskan akaun pengguna dan keizinan melalui arahan USERADD dan arahan lain. 3. Gunakan APT dan YUM untuk menguruskan pakej perisian untuk memastikan kemas kini sistem dan keselamatan. 4. Konfigurasi firewall, memantau log, dan lakukan sandaran data untuk memastikan keselamatan sistem. 5. menyelesaikan masalah dan menyelesaikan melalui analisis log dan penggunaan alat. 6. Mengoptimumkan parameter kernel dan konfigurasi aplikasi, dan ikuti amalan terbaik untuk meningkatkan prestasi sistem dan kestabilan.

Meningkatkan Produktiviti dengan Pintasan Perintah Custom Menggunakan Linux Aliases Meningkatkan Produktiviti dengan Pintasan Perintah Custom Menggunakan Linux Aliases Apr 12, 2025 am 11:43 AM

Pengenalan Linux adalah sistem operasi yang kuat yang disukai oleh pemaju, pentadbir sistem, dan pengguna kuasa kerana fleksibiliti dan kecekapannya. Walau bagaimanapun, kerap menggunakan arahan panjang dan kompleks boleh membosankan dan er

Apakah tujuan utama Linux? Apakah tujuan utama Linux? Apr 16, 2025 am 12:19 AM

Penggunaan utama Linux termasuk: 1. Sistem Operasi Pelayan, 2. Sistem Terbenam, 3. Linux cemerlang dalam bidang ini, menyediakan kestabilan, keselamatan dan alat pembangunan yang cekap.

Apa yang sebenarnya Linux? Apa yang sebenarnya Linux? Apr 12, 2025 am 12:20 AM

Linux sesuai untuk pelayan, persekitaran pembangunan, dan sistem tertanam. 1. Sebagai sistem pengendalian pelayan, Linux stabil dan cekap, dan sering digunakan untuk menggunakan aplikasi konkurasi tinggi. 2. Sebagai persekitaran pembangunan, Linux menyediakan alat arahan dan sistem pengurusan pakej yang cekap untuk meningkatkan kecekapan pembangunan. 3. Dalam sistem tertanam, Linux ringan dan disesuaikan, sesuai untuk persekitaran dengan sumber yang terhad.

Apakah perbezaan sokongan virtualisasi antara Linux dan Windows? Apakah perbezaan sokongan virtualisasi antara Linux dan Windows? Apr 22, 2025 pm 06:09 PM

Perbezaan utama antara Linux dan Windows dalam sokongan virtualisasi adalah: 1) Linux menyediakan KVM dan XEN, dengan prestasi dan fleksibiliti yang luar biasa, sesuai untuk persekitaran penyesuaian yang tinggi; 2) Windows menyokong virtualisasi melalui Hyper-V, dengan antara muka yang mesra, dan disepadukan dengan ekosistem Microsoft, sesuai untuk perusahaan yang bergantung pada perisian Microsoft.

See all articles