Skrip Shell untuk Memuat naik Fail ke Subdirektori Sama pada Pelayan Jauh

Video: Skrip Shell untuk Memuat naik Fail ke Subdirektori Sama pada Pelayan Jauh

Video: Skrip Shell untuk Memuat naik Fail ke Subdirektori Sama pada Pelayan Jauh
Video: Using Safari as an RSS feed reader 2024, Mac
Skrip Shell untuk Memuat naik Fail ke Subdirektori Sama pada Pelayan Jauh
Skrip Shell untuk Memuat naik Fail ke Subdirektori Sama pada Pelayan Jauh
Anonim

Tugas yang sangat umum untuk pemaju web adalah memuat naik satu fail dari subdirektori pada kotak pembangunan anda ke subdirektori yang sama pada pelayan jauh. Malangnya, ini selalu menjadi proses manual yang menjengkelkan yang melibatkan pertukaran direktori pada kedua-dua pelayan, dan membuang masa yang banyak.

Jadi, saya telah mengambilnya untuk menulis skrip shell untuk mengautomasikan ini untuk saya, menggunakan scp untuk menyalin fail selamat. (Catatan Nota Penting: ftp adalah sangat tidak selamat, gunakan WinSCP sebaliknya)

Masalah utama untuk diselesaikan ialah pemasangan WordPress saya pada mesin pembangunan saya mempunyai direktori asas berbeza daripada pemasangan pada pelayan saya. Pada mesin pembangunan saya itu / var / www, dan pada pelayan saya adalah sesuatu yang lebih seperti / var / www / howtogeek / docs /. Saya memutuskan untuk memindahkan mereka ke pembolehubah pada permulaan skrip, seperti ini:

[email protected] RDIR=/var/www/howtogeek/docs LDIR=’/var/www’

Perhatikan bahawa direktori setempat (LDIR) dalam skrip mempunyai sebelum setiap / dalam laluan. Ini kerana kita akan lulus ini ke dalam perintah sed kemudian dalam skrip, jadi kita harus melepaskan nilai tersebut. Saya pasti ada cara lain di sekitar ini, tetapi saya tidak menyedarinya.

Seterusnya, saya menyediakan log masuk ssh automatik. Untuk melakukan ini, anda perlu terlebih dahulu menjalankan utiliti ssh keygen seperti:

ssh-keygen -t rsa

Kemudian anda perlu menyalin fail ~ /.ssh / id_rsa.pub ke fail ~ /.ssh / authorized_keys pada pelayan jauh. Sekiranya direktori ~ /.ssh sudah dibuat pada pelayan jauh (mungkin ingin semak), maka anda boleh menjalankan perintah ini untuk menyalin kunci ke atas:

cat ~/.ssh/id_rsa.pub | ssh user@hostname ‘cat >>.ssh/authorized_keys’

Kini kami mendapat log masuk ssh automatik, yang akan membolehkan penggunaan utiliti scp tanpa kata laluan. Sekarang mari kita lihat perintah scp yang akan kita gunakan dalam skrip:

scp $1 $SSHSERVER:$RDIR`pwd|sed “s/${LDIR}//”`/`echo $1|sed ‘s/.*///’`

$ 1 ialah parameter yang anda akan lulus ke skrip untuk nama fail yang anda cuba muat naik. $ SSHSERVER dan $ RDIR adalah pembolehubah yang akan kami tetapkan pada permulaan skrip untuk menetapkan nama @ hostname dan laluan jauh terdahulu.

Blok pertama yang bermula dengan pwd | mengambil laluan direktori semasa dan jalur dari bahagian sebelumnya jalan yang tidak sepadan dengan pelayan jauh, tetapi meninggalkan seluruh jalan. Sebagai contoh, jika anda berada di / var / www / wp-content / apabila anda menjalankan arahan, blok sed akan menghapus / var / www berdasarkan pembolehubah LDIR kami, tetapi biarkan / wp-content /.

Blok kedua hanya memastikan untuk melepaskan keseluruhan laluan sebelumnya dari nama fail yang diluluskan ke skrip supaya anda hanya mendapat nama fail.

Sebagai contoh, jika anda menamakan skrip up.sh dan lari dari direktori / var / www / wp-content / plugins / local anda pada fail:

up.sh myplugin.php

Ini akan dikembangkan oleh shell sebagai berikut:

scp myplugin.php [email protected]:/var/www/howtogeek/docs/wp-content/plugins/myplugin.php

Daripada mencuba membuat fail skrip anda sendiri berdasarkan artikel, saya telah menyediakannya untuk anda memuat turun. Dengan cara itu tidak akan ada masalah dengan aksara khas yang tidak berfungsi … dan ya, saya menggunakan skrip untuk memuat naik sendiri =)

Muat turun geek-uploader.sh

Hanya letakkannya di suatu tempat di jalan anda, dan namakan apa sahaja yang anda mahu. Saya menamakan semula saya sebagai "naik", jadi saya hanya boleh menaip "filename.txt" untuk dimuat naik. Juga ingat untuk membukanya dan mengubah pembolehubah pada permulaan skrip agar sesuai dengan persekitaran anda.

Skrip ini harus berfungsi dengan apa-apa dengan * shell nix dan utiliti scp. Saya menggunakan Ubuntu, tetapi ia harus berfungsi pada Solaris, OS X, atau Windows dengan Cygwin dipasang.

Disyorkan: