29Jun

Shell Script, lai augšupielādētu failu uz to pašu apakšdirektoriju uz attālā servera

click fraud protection

Ļoti bieži sastopams uzdevums, lai tīmekļa izstrādātājs augšupielādētu vienu failu no jūsu attīstības kastes apakšdirektorijas uz to pašu apakšdirektoriju attālajā serverī.Diemžēl tas vienmēr izraisa kaitinošu manuālu procesu, kas ietver direktoriju pārslēgšanu abos serveros un lielu daudzumu atkritumu.

Tātad, es pats uz to esmu uzrakstījis čaulas skriptu, lai to automatizētu, izmantojot scp drošai failu kopēšanai.(Svarīga piezīme: ftp ir drausmīgi nedrošs, izmantojiet WinSCP)

Galvenā problēma, kas jāatrisina, ir tas, ka manai WordPress instalēšanai manā izstrādes mašīnā ir atšķirīgs bāzes direktorijs, nevis instalācija manā serverī.Manā izstrādes mašīnā tas ir /var/ www, un manā serverī ir kaut kas vairāk kā /var/www/howtogeek/docs/.Es nolēmu vienkārši pārvietot tos uz mainīgajiem lielumiem skripta sākumā, piemēram:

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

Ņemiet vērā, ka vietējais direktorijs( LDIR) skriptā ir \ pirms katra / ceļā.Tas ir tāpēc, ka vēlāk skriptā mēs to nodosim komandā sed komandā, tāpēc mums jāizvairās no šīm vērtībām. Esmu pārliecināts, ka šis ir kaut kas cits veids, bet es to nezinu.

instagram viewer

Tālāk es izveidoju automātiskos ssh logins. Lai to izdarītu, vispirms jāuzstāda ssh keygen lietderība šādi:

ssh-keygen-t rsa

Pēc tam jums ir nepieciešams nokopēt ~ /.ssh/ id_rsa.pub failu uz ~ /.ssh/ authorized_keys failu uz attālā servera. Ja ~ /. ssh katalogs jau ir izveidots attālajā serverī( iespējams, vēlēsities pārbaudīt), tad jūs varat palaist šo komandu, lai kopētu atslēgas:

cat ~ /.ssh/ id_rsa.pub |ssh user @ hostname 'cat' & gt; & gt;.ssh / authorized_keys '

Tagad mums ir automātiski ssh logins, kas ļaus izmantot SCP lietderību bez paroles. Tagad apskatīsim scp komandu, kuru mēs izmantosim skriptā:

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

$ 1 ir parametrs, kuru jūs pārsūtīsiet uz faila nosaukumu, kuru mēģināt augšupielādēt, skriptam.$ SSHSERVER un $ RDIR ir mainīgie, kurus mēs iestatīsim skripta sākumā, lai iestatītu lietotāja @ saimniekdatora nosaukumu un iepriekšējo attālo ceļu.

Pirmais bloks, kas sākas ar pwd | sed, ņem pašreizējo direktorijas ceļu un noņem no iepriekšējās ceļa daļas, kas neatbilst attālajam serverim, bet atstāj pārējo ceļu. Piemēram, ja jūs izmantojat /var/www/ wp-content / komandu, tad sed bloks izstumtu /var/ www, pamatojoties uz mūsu LDIR mainīgo, bet atstājiet / wp-content / daļu no tā.

Otrā bloķēšana tikai novērš visu iepriekšējo ceļu pie faila nosaukuma, kas nodots skriptam, lai jūs vienkārši iegūtu faila nosaukumu.

Piemēram, ja jūs norādījāt skriptu up.sh un izmantojāt to no vietējā /var/www/ wp-content /plugins/ direktorijā uz faila:

up.sh myplugin.php

Tas būtu izvērsts ar apvalku šādi:

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

Tā vietā, lai mēģinātu izveidot savu skripta failu, pamatojoties uz rakstu, es esmu nodrošinājis to lejupielādēt. Tādā veidā nebūs problēmu ar īpašām rakstzīmēm, kas nedarbojas. .. un jā, es izmantoju skriptu, lai augšupielādētu sevi =)

Lejupielādējiet geek-uploader.sh

Tikai ielieciet to kaut kur savā ceļā un nosauciet to, ko vien vēlaties. Es pārdēvēju mani vienkārši "uz augšu", lai es varētu vienkārši ierakstīt "up filename.txt", lai augšupielādētu. Atcerieties to arī atvērt un mainīt skripta sākumā esošos mainīgos, lai tie atbilstu jūsu videi.

Šis skripts jādarbojas ar kaut ko ar * nix apvalku un SCP lietderību. Es izmantoju Ubuntu, bet tam vajadzētu strādāt ar Solaris, OS X vai pat Windows ar Cygwin instalēšanu.