Shell Script faili üleslaadimiseks serveri samasse alamkataloogi

Shell Script faili üleslaadimiseks serveri samasse alamkataloogi
Shell Script faili üleslaadimiseks serveri samasse alamkataloogi

Video: Shell Script faili üleslaadimiseks serveri samasse alamkataloogi

Video: Shell Script faili üleslaadimiseks serveri samasse alamkataloogi
Video: Understanding and Troubleshooting Windows Search and Indexing - YouTube 2024, Mai
Anonim

Veebiarenda jaoks on väga sageli ülesanne üles laadida üksiku faili arenduskasti alamkataloogist serveri samasse 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ülgne märkus: ftp on jubedalt ebakindel, selle asemel kasutage WinSCP-d)

Peamine lahendus oli see, et mu WordPressi installimiseks minu arendusmasinale on erinevad baaskataloogid kui minu serveri installil. Minu arendusmasinas on see / var / www ja minu serveris on midagi enamat kui / var / www / howtogeek / docs /. Ma otsustasin neid lihtsalt skripti alguses muuta muutujateks, näiteks:

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

Pange tähele, et skripti kohalikul kataloogil (LDIR) 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.

Järgmisena seadistan automaatselt ssh sisselogimised. Selleks peate esmalt käivitama ssh keygeni utiliidi järgmiselt:

ssh-keygen -t rsa

Seejärel peate faili ~ /.ssh / id_rsa.pub kopeerima serveri ~ /.ssh / authorized_keys failile. Kui ~ /.ssh kataloog on serveris juba loodud (võiksite seda kontrollida), võite selle käskluse käivitada, et kopeerida võtmed üle:

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

Nüüd on meil automatiseeritud ssh sisselogimised, mis võimaldab kasutada scp-i rakendust ilma paroolita. Nüüd vaatame skripti käsku scp, mida me kasutame:

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 käitusid / var / www / wp-content / käskluses, blokeerib sed blokk / var / www meie LDIR-i muutuja järgi, 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 üles.sh ja käivitasite selle failist kohaliku / var / www / wp-content / plugins / kataloogi kaudu:

up.sh myplugin.php

Seda shelli oleks laiendatud järgmiselt:

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

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

Laadi geek-uploader.sh alla

Lihtsalt pane see kuhugi oma teekonda ja nimetage see mida iganes sa tahad. Ü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.

Soovitan: