„Shell“ scenarijus, norint įkelti failą į tą patį „Remote Server“ katalogą
Labai dažnas žiniatinklio kūrėjo uždavinys yra įkelti vieną failą iš savo vystymosi laukelio pakatalogio į tą patį nuotolinio serverio pakatalogį. Deja, tai visada būna erzina rankinis procesas, apimantis abiejų serverių katalogų perjungimą, ir daug laiko praleidžia.
Taigi, aš paėmiau jį, kad galėčiau parašyti apvalkalo scenarijų, kad automatizuotumėte tai man, naudojant scp saugiam failų kopijavimui. (Svarbi pusė Pastaba: ftp yra siaubingai nesaugus, vietoj to naudokite WinSCP)
Pagrindinė problema, kurią reikia išspręsti, buvo ta, kad mano „WordPress“ įdiegimas mano vystymo įrenginyje turi kitą bazinį katalogą, nei diegimas mano serveryje. Mano kūrimo mašinoje tai yra / var / www, o mano serveryje yra kažkas panašaus į / var / www / howtogeek / docs /. Nusprendžiau tiesiog perkelti juos į kintamuosius scenarijaus pradžioje, pavyzdžiui:
[email protected]
RDIR = / var / www / howtogeek / docs
LDIR = "\ t
Atkreipkite dėmesį, kad vietiniame kataloge (LDIR) \ t Taip yra todėl, kad vėliau šią scenarijų perduosime į sed komandą, todėl turime išeiti iš šių vertybių. Aš tikiu, kad tai yra kitaip, bet aš nežinau.
Be to, aš sukūriau automatizuotus ssh prisijungimus. Norėdami tai padaryti, pirmiausia turite paleisti „ssh keygen“ įrankį:
ssh-keygen -t rsa
Tada reikia nukopijuoti failą ~ / .ssh / id_rsa.pub į nuotolinio serverio failą ~ / .ssh / author_keys. Jei nuotoliniame serveryje jau sukurtas ~ / .ssh katalogas (galbūt norėsite patikrinti), galite paleisti šią komandą, kad kopijuotumėte raktus:
katė ~ / .ssh / id_rsa.pub | ssh user @ hostname 'katė >> .ssh / author_keys'
Dabar mes turime automatinius ssh prisijungimus, kurie leis naudoti „scp“ įrankį be slaptažodžio. Dabar pažiūrėkime į scp komandą, kurią naudosime scenarijuje:
scp $ 1 $ SSHSERVER: $ RDIR'pwd | sed „s / $ LDIR //” '/' echo $ 1 |
$ 1 yra parametras, kurį perduosite scenarijaus failo pavadinimui, kurį bandote įkelti. $ SSHSERVER ir $ RDIR yra kintamieji, kuriuos nustatysime scenarijaus pradžioje, kad nustatytume naudotojo @ pavadinimą ir ankstesnį nuotolinį kelią.
Pirmasis blokas, prasidedantis nuo pwd | sed, atves dabartinį katalogo kelią ir pašalina ankstesnę kelio dalį, kuri neatitinka nuotolinio serverio, bet palieka likusią kelią. Pvz., Jei buvote / var / www / wp-content / paleisdami komandą, sed blokas pašalintų / var / www, remiantis mūsų LDIR kintamuoju, tačiau palikite / wp-content / osa jo.
Antrasis blokas tik užkerta kelią nuo ankstesnio kelio, nukreipto į scenarijaus failą, kad galėtumėte gauti failo pavadinimą.
Pvz., Jei pavadinote scenarijų „up.sh“ ir bėgote jį iš vietinio / var / www / wp-content / plugins / katalogo faile:
up.sh myplugin.php
Tai būtų išplėsta apvalkalu taip:
scp myplugin.php [email protected]: /var/www/howtogeek/docs/wp-content/plugins/myplugin.php
Vietoj to, kad bandytumėte sukurti savo scenarijų failą pagal straipsnį, aš jį pateikiu jums atsisiųsti. Tokiu būdu nebus jokių problemų su specialiais simboliais, kurie neveikia ... ir taip, aš naudoju scenarijų, kad įkeltumėte save =)
Parsisiųsti geek-uploader.sh
Tiesiog įdėkite jį kažkur į savo kelią ir pavadinkite jį, ką tik norite. Aš pervadinau mano raktą tik į „aukštyn“, kad galėčiau tiesiog įvesti „iki filename.txt“ įkelti. Taip pat nepamirškite atidaryti ir pakeisti scenarijaus pradžioje esančius kintamuosius, kad jie atitiktų jūsų aplinką.
Šis scenarijus turėtų veikti su * nix apvalkalu ir scp programa. Aš naudoju Ubuntu, bet ji turėtų veikti „Solaris“, „OS X“ ar net „Windows“ su „Cygwin“.