"Shell" scenarijus, norint įkelti failą į tą pačią pakatalogį nuotoliniame serveryje

"Shell" scenarijus, norint įkelti failą į tą pačią pakatalogį nuotoliniame serveryje
"Shell" scenarijus, norint įkelti failą į tą pačią pakatalogį nuotoliniame serveryje

Video: "Shell" scenarijus, norint įkelti failą į tą pačią pakatalogį nuotoliniame serveryje

Video:
Video: Using Safari as an RSS feed reader - YouTube 2024, Gegužė
Anonim

Labai dažna užduotis žiniatinklio kūrėjui įkėlina vieną failą iš jūsų vystymosi dėžutės pakatalogio į tą pačią katalogo dalį, esančią nuotoliniame serveryje. Deja, tai visada baigiasi erzinančiu rankiniu būdu, perjungiant katalogus abiejuose serveriuose ir atliekant daug laiko.

Taigi, aš paėmus sau parašyti shell scenarijų, kad automatizuotų tai man, naudojant scp saugiam kopijavimui. (Svarbi pastaba: ftp yra siaubingai nesaugi, vietoj jos naudokite WinSCP)

Pagrindinė išspręsti problema buvo tai, kad mano "WordPress" įdiegimas į mano kūrimo mašiną turi kitokį pagrindinį katalogą nei diegimas mano serveryje. Mano kūrimo mašina yra / var / www, o mano serveryje yra kažkas daugiau / var / www / howtogeek / docs /. Aš nusprendžiau pereiti į kintamuosius scenarijaus pradžioje, pavyzdžiui:

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

Atminkite, kad scenarijaus vietinis katalogas (LDIR) turi prieš kiekvieną / keliu. Taip yra dėl to, kad vėliau šią scenarijų perduosime į komandą sed, taigi turime išvengti šių vertybių. Aš įsitikinęs, kad tai kitaip, bet aš nežinau apie tai.

Tada aš sukūriau automatinius ssh prisijungimus. Norėdami tai padaryti, pirmiausia turite paleisti "ssh keygen" programinę įrangą taip:

ssh-keygen -t rsa

Tada reikia nukopijuoti ~ /.ssh / id_rsa.pub failą į ~ /.ssh / authorized_keys failą nuotoliniame serveryje. Jei ~ /.ssh katalogas jau yra sukurtas nuotoliniame serveryje (galbūt norėsite patikrinti), tuomet paleiskite šią komandą, norėdami nukopijuoti raktus:

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

Dabar mes turime automatinius ssh prisijungimus, kurie leis naudoti scp įrankį be slaptažodžio. Dabar pažvelkime į scp komandą, kurią naudosime scenarijuje:

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

$ 1 yra parametras, kurį perduosite į scenarijų failo pavadinimui, kurį bandysite įkelti. $ SSHSERVER ir $ RDIR yra kintamieji, kuriuos nustatysime scenarijaus pradžioje, kad nustatytume naudotojo @ vardą ir ankstesnį nuotolinį kelią.

Pirmas blokas, kuris prasideda pwd | sed, paima dabartinį katalogų kelią ir išbraukia ankstesnę kelio dalį, kuri neatitinka nuotolinio serverio, tačiau palieka likusį kelią. Pavyzdžiui, jei esate / var / www / wp-content / paleidę komandą, sed blokas išbraukė / var / www pagal mūsų LDIR kintamąjį, bet palikite / wp-content / jo dalį.

Antrasis blokas tik užtikrina, kad pašalins visą ankstesnį kelią nuo failo pavadinimo, perduoto scenarijai, taigi jūs tiesiog gausite failo vardą.

Pavyzdžiui, jei pavadinote scenarijų up.sh ir paleidėte jį iš savo vietinio / var / www / wp-content / plugins / katalogo failo:

up.sh myplugin.php

Tai būtų išplečiama apvalkalu:

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

Užuot bandę kurti savo scenarijų failą, remdamasi straipsniu, aš jį pateikėu atsisiųsti. Tokiu būdu nebus jokių problemų su specialiaisiais simboliais, kurie neveikia … ir taip, aš naudoju scenarijų, kad pats įkelčiau =)

Atsisiųskite geek-uploader.sh

Tiesiog įdėti jį kažkur savo kelyje ir pavadinkite tai, ką norite. Aš pervadino pavadinimą "up", todėl galiu tiesiog įkelti "up 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ų dirbti su visais su "* nix" apvalkalu ir "scp" programa. Aš naudoju "Ubuntu", bet jis turėtų veikti su "Cygwin", "Solaris", "OS X" ar net "Windows".

Rekomenduojamas: