


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
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
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
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>
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











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.

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.

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.

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.

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

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.

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.

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.
