29Jun

Shell-komentotiedosto, jonka avulla tiedosto voidaan siirtää kauko-palvelimen samaan alihakemistoon

Web-kehittäjälle erittäin tavallinen tehtävä on ladata yksittäinen tiedosto kehitystiedostosi alihakemistosta samaan alihakemistoon etäpalvelimessa. Valitettavasti tämä päättyy aina ärsyttävään manuaaliseen prosessiin, jossa on kytketty hakemistoja molemmilla palvelimilla, ja jätetään paljon aikaa.

Joten olen ottanut sen itselleni kirjoittamaan komentosarjan, joka automatisoi tämän minulle käyttäen SCP: tä suojatun tiedostojen kopioimiseksi.(Tärkeä sivu Huomautus: ftp on hirvittävän epävakaa, käytä WinSCP: tä sen sijaan)

Suurin ongelman ratkaisemiseksi oli, että minun WordPressin asentamani kehitystyökalulla on eri tukiasema kuin asennukseni palvelimellani. Kehitystyössäni on /var/ www, ja palvelimellani on jotain enemmän kuin /var/www/howtogeek/docs/.Päätin siirtää ne muuttujiksi komentorivin alussa seuraavasti:

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

Huomaa, että paikallisen hakemiston( LDIR) komentosarjassa on \ ennen jokaista / polussa. Tämä johtuu siitä, että siirrämme tämän sed-komentoon myöhemmin käsikirjoituksessa, joten meidän on vältettävä nämä arvot. Olen varma, että tämä on muu asia, mutta en ole tietoinen siitä.

Seuraavaksi asetin automaattiset ssh-kirjautumiset. Tätä varten sinun on ensin suoritettava ssh keygen-apuohjelma kuten näin:

ssh-keygen -t rsa

Sitten sinun täytyy kopioida ~ /.ssh/ id_rsa.pub-tiedosto ~ /.ssh/ authorized_keys -tiedostoon etäpalvelimella. Jos ~ /. ssh-hakemisto on jo luotu etäpalvelimelle( ehkä haluat tarkistaa), voit kopioida avaimet seuraavalla komennolla:

cat ~ /.ssh/ id_rsa.pub |ssh käyttäjä @ hostname 'cat & gt; & gt;.ssh / authorized_keys '

Nyt meillä on automaattiset ssh-kirjautumiset, joiden avulla scp-apuohjelma voidaan käyttää ilman salasanaa. Katsotaan nyt scp-komentoa, jota käytämme käsikirjoituksessa:

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

$ 1 on parametri, jonka siirrät skriptin tiedostonimeen, jonka yrität ladata.$ SSHSERVER ja $ RDIR ovat muuttujia, jotka asetamme komentosarjan alkuun asettaa käyttäjän @ hostname ja edellinen etäpolku.

Ensimmäinen lohko, joka alkaa pwd | sed: n kanssa, vie nykyisen hakemistopolun ja liuskaa pois edeltävän polun osan, joka ei vastaa etäpalvelinta, mutta jättää jäljellä olevan polun. Jos esimerkiksi olit /var/www/ wp-content / komentoa suoritettaessa, sed-lohko irrottaisi /var/ www: n, joka perustuu meidän LDIR-muuttujiimme, mutta jätä / wp-sisältö / osa sitä.

Toinen lohko vain varmistaa, että kaikki edellinen polku poistetaan komentotiedostoon siirrettyä tiedostonimeä kohden, jotta saisit vain tiedostonimen.

Jos esimerkiksi nimität komentosarjan up.sh ja suoritit sen paikallisesta /var/www/ wp-sisällön /plugins/-hakemistosta tiedostoon

up.sh myplugin.php

Tätä kuvaruutua olisi laajennettava seuraavasti:

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

Sen sijaan, että yrität luoda omia komentosarjatiedostoasi artikkelin perusteella, olen antanut sen, että voit ladata sen. Tällä tavalla ei ole mitään ongelmia, joissa erikoismerkit eivät toimi. .. ja kyllä, käytin käsikirjoitusta ladata itse =)

Lataa geek-uploader.sh

Laita se jonnekin poluksi ja nimeä se mitä haluat. Minun nimeksi tuli vain "ylös", joten voin vain kirjoittaa "up filename.txt" ladata. Muista myös avata se ja muuttaa muuttujat komentosarjan alussa vastaamaan ympäristöäsi.

Tämä käsikirjoitus toimii millä tahansa * nix shellilla ja scp-apuohjelmalla. Käytän Ubuntua, mutta sen pitäisi toimia Solaris, OS X tai jopa Windows Cygwin asennettuna.