29Jun

Shell Script faili üleslaadimiseks serveri samasse alamkataloogi

click fraud protection

Veebiarenda jaoks on väga tavaline ülesanne laadida ühe arenduskasti alamkataloogist ühe faili üles sama serveri alamkataloogi. Kahjuks tekitab see alati tüütu käsitsiprotsessi, mis hõlmab mõlema serveri kataloogide vahetamist ja raiskab palju aega.

Niisiis, olen võtnud selle endale, et kirjutada shell skripti, et seda automatiseerida minu jaoks, kasutades scp turvaliseks failide kopeerimiseks.(Tähtis külgmiste märkus: ftp on jubedalt ebaturvaline, kasutage selle asemel WinSCP-d)

Peamine probleem, mida lahendada oli see, et minu WordPressi installimiseks minu arendusmasinas on erinev baaskataloog kui minu serveri installil. Minu arendusmasinas on see /var/ www ja minu serveris on midagi rohkemat kui /var/www/howtogeek/docs/.Ma otsustasin neid teisaldada skripti alguses muutujatena:

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

Pange tähele, et kohalik kataloog( LDIR) skriptis on \ enne iga / teekonnal. Seda sellepärast, et me kavatseme selle skripti hiljem anda sed käsuks, seega peame neid väärtusi põgenema. Ma olen kindel, et sellel on mõni teine ​​viis, kuid ma ei tea sellest.

instagram viewer

Järgmisena seadisin automatiseeritud ssh sisselogimised. Selleks peate kõigepealt käivitama ssh keygeni rakenduse järgmiselt:

ssh-keygen -t rsa

Siis peate kopeerima ~ /.ssh/ id_rsa.pub faili ~ /.ssh/ authorized_keys-faili serveri serverisse. Kui ~ /. ssh kataloog on serveris juba loodud( võib-olla soovite seda kontrollida), võite selle käskluse käivitada, et kopeerida võtmeid:

cat ~ /.ssh/ id_rsa.pub |ssh kasutaja @ hostinimi 'cat'; & gt;.ssh / authorized_keys '

Nüüd on meil automaatne ssh-sisselogimine, mis võimaldab kasutada scp-i rakendust ilma paroolita. Nüüd vaatame skripti kasutades käsku scp:

scp $ 1 $ SSHSERVER: $ RDIR`pwd | sed "s / ${ LDIR} //" "/ \ echo $ 1 | sed 's /.* \ /// '`

$ 1 on parameeter, mille saadate skriptile failinime jaoks, mida üritate üles laadida.$ SSHSERVER ja $ RDIR on muutujad, mille määrame skripti alguses, et määrata kasutaja @ hostinimi ja eelmine kaugtransport.

Esimene blokk, mis algab pwd | sed võtab praeguse kataloogijuhi ja eemaldab teekonna eelmise osa, mis ei vasta serveri serverile, kuid jätab ülejäänud tee. Näiteks, kui sa oleksid /var/www/-ga wp-content / käskluse käivitamisel, siis sed blokeerib /var/ www, kasutades meie LDIR-i muutujat, kuid jätame selle / wp-sisu / selle osa.

Teine plokk lihtsalt eemaldab kogu eelmise tee stsenaariumile edastatud failinimest, nii et saate lihtsalt failinime.

Näiteks kui te nimetasite skripti up.sh ja käivitasite selle oma kohalikust /var/www/ wp-content /plugins/ kataloogist failis:

up.sh myplugin.php

Seda oleks laiendanud shell järgmiselt:

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

Selle asemel, et proovida luua oma artikli põhjal põhinevat skriptifaili, olen esitanud selle, et te saaksite seda alla laadida. Sellisel viisil pole probleeme erimärkidega, mis ei tööta. .. ja jah, ma kasutasin skripti ennast üleslaadimiseks =)

Laadige geek-uploader.sh

lihtsalt pane see kuhugi oma teekonda ja nimetage see mida iganes soovite.Ümber nimetasin minu jaoks lihtsalt "üles", nii et võin lihtsalt üles laadida üles "up filename.txt".Ärge unustage seda ka avada ja muuta skripti alguses olevaid muutujaid vastavalt oma keskkonnale.

See skript peaks toimima midagi * nixi shelliga ja scp-i rakendusega. Ma kasutan Ubuntu, kuid see peaks töötama koos Cygwiniga installitud Solaris, OS X-i või isegi Windowsiga.