Shelli skript faili laadimiseks kaugserveri samasse alamkataloogi
Veebiarendaja väga tavaline ülesanne on ühe faili arendamine teie arenduskasti alamkataloogist samasse alamkataloogi serveris. Kahjuks jõuab see alati tüütu manuaalprotsessi, mis hõlmab kataloogide vahetamist mõlemas serveris ja raiskab palju aega.
Niisiis, olen võtnud selle endale, et kirjutada shelliskript, et seda minu jaoks automatiseerida, kasutades turvalist failide kopeerimist kasutades scp-i. (Oluline külg Märkus: ftp on kohutavalt ebakindel, kasutage selle asemel WinSCP-d)
Peamiseks probleemiks oli see, et minu WordPressi installeerimisel minu arendusmasinal on erinev alusraamatus kui minu serverisse paigaldamine. Minu arendusmasinal on see / var / www, ja minu serveris on midagi enamat kui / var / www / howtogeek / docs /. Otsustasin lihtsalt need muutujad skripti alguses muutuvateks:
[email protected]
RDIR = / var / www / howtogeek / docs
LDIR = "var \ t
Pange tähele, et skriptil olev kohalik kataloog (LDIR) on \ t See on sellepärast, et me kavatseme selle skripti hiljem käsklusesse kanda, nii et me peame need väärtused põgenema. Ma olen kindel, et selle ümber on mõni muul viisil, aga ma pole sellest teadlik.
Seejärel seadistasin automatiseeritud ssh sisselogimised. Selleks peate esmalt käivitama ssh keygen kasuliku:
ssh-keygen -t rsa
Seejärel peate kopeerima ~ / .ssh / id_rsa.pub faili kaugserveris olevasse faili ~ / .ssh / author_keys. Kui ~ / .ssh kataloog on juba serveris loodud (võib-olla soovite seda kontrollida), siis saate selle käsu klahvide kopeerimiseks käivitada:
kass ~ / .ssh / id_rsa.pub | ssh kasutaja @ hostinimi 'kass >> .ssh / author_keys'
Nüüd on meil automaatsed ssh sisselogimised, mis võimaldavad skript-utiliidi kasutamist ilma paroolita. Nüüd vaatame scp-käsku, mida me skriptis kasutame:
scp $ 1 $ SSHSERVER: $ RDIR'pwd | sed “s / $ LDIR //” '/' echo $ 1 | sed 's /.*\t
$ 1 on parameeter, mida edastate skripti failinimele, mida üritate üles laadida. $ SSHSERVER ja $ RDIR on muutujad, mille me seadistame skripti alguses kasutaja @ hostinime ja eelmise kaugjuhi määramiseks.
Esimene plokk, mis algab pwd | sed-ga, võtab praeguse kataloogiraja ja eemaldab selle tee eelmise osa, mis ei vasta kaugserverile, kuid jätab ülejäänud tee. Näiteks, kui sa olid / var / www / wp-content / käsu käsutuses, libiseb sedblokk / var / www meie LDIR muutuja alusel, kuid jätaks / wp-sisu / selle osa.
Teine plokk lihtsalt eemaldab kogu eelmise tee skriptile edastatud failinimest välja, nii et sa saad lihtsalt faili nime.
Näiteks kui nimetasite skripti up.sh ja jooksite selle oma kohalikust / var / www / wp-content / plugins / kataloogist failis:
up.sh myplugin.php
Seda oleks kesta laiendanud järgmiselt:
scp myplugin.php [email protected]: /var/www/howtogeek/docs/wp-content/plugins/myplugin.php
Selle asemel, et proovida luua oma skriptifaili artikli alusel, olen ma selle alla laadinud. Nii ei teki mingeid probleeme erimärkidega, mis ei tööta ... ja jah, ma kasutasin üleslaadimiseks skripti =)
Lae alla geek-uploader.sh
Pane see kuskil oma teele ja nimetage see, mida sa tahad. Ma nimetasin kaevanduse lihtsalt "üles", nii et ma lihtsalt kirjutan üles üles üleslaadimiseks "up filename.txt". Samuti pidage meeles, et see avaneb ja muutke skripti alguses olevaid muutujaid vastavalt teie keskkonnale.
See skript peaks töötama midagi * nix-kestaga ja scp-utiliidiga. Ma kasutan Ubuntu, kuid see peaks töötama Solaris, OS X või isegi Windowsiga, kus Cygwin on installitud.