Mājas lapa » » Shell skripts, lai augšupielādētu failu tajā pašā apakšdirektorijā attālā serverī

    Shell skripts, lai augšupielādētu failu tajā pašā apakšdirektorijā attālā serverī

    Ļoti bieži web izstrādātāja uzdevums ir augšupielādēt vienu failu no jūsu apakšizvēlnes jūsu attīstības lodziņā uz to pašu apakšdirektoriju attālā serverī. Diemžēl tas vienmēr kļūst par kaitinošu manuālu procesu, kas ietver abu serveru direktoriju pārslēgšanu un daudz laika izšķērdēšanu.

    Tātad, es esmu to paņēmis, lai uzrakstītu apvalka skriptu, lai to automatizētu, izmantojot scp drošai failu kopēšanai. (Svarīga puse Piezīme: ftp ir briesmīgi nedrošs, izmantojiet WinSCP)

    Galvenā problēma, kas bija jārisina, bija tā, ka manai WordPress instalācijai manā attīstības iekārtā ir atšķirīgs bāzes katalogs nekā instalēšana manā serverī. Manā attīstības iekārtā tas ir / var / www, un manā serverī ir kaut kas vairāk, piemēram, / var / www / howtogeek / docs /. Es nolēmu vienkārši pārvietot tos mainīgajos lielumos skripta sākumā, piemēram:

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

    Ņemiet vērā, ka vietējā direktorija (LDIR) skriptu \ t Tas ir tāpēc, ka mēs šo skriptu vēlāk nodosim sed komandai, tāpēc mums jāizvairās no šīm vērtībām. Esmu pārliecināts, ka tas ir kaut kādā citā veidā, bet es par to nezinu.

    Tālāk es izveidoju automatizētus ssh pieteikumus. Lai to paveiktu, vispirms ir jāizmanto ssh keygen lietderība:

    ssh-keygen -t rsa

    Tad jums ir nepieciešams kopēt ~ / .ssh / id_rsa.pub failu uz ~ / .ssh / author_keys failu attālajā serverī. Ja ~ / .ssh katalogs jau ir izveidots attālajā serverī (varbūt vēlaties pārbaudīt), tad varat palaist šo komandu, lai kopētu atslēgas:

    kaķis ~ / .ssh / id_rsa.pub | ssh lietotājs @ hostname 'cat >> .ssh /itatud_keys'

    Tagad mēs esam saņēmuši automatizētus ssh pieteikumus, kas ļaus izmantot scp utilītu bez paroles. Tagad aplūkosim skriptu, ko mēs izmantosim skriptos:

    scp $ 1 $ SSHSERVER: $ RDIR'pwd | sed “s / $ LDIR //” '/' echo $ 1 | sed '/ / *

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

    Pirmais bloks, kas sākas ar pwd | sed, ņem pašreizējo direktoriju ceļu un noņem iepriekšējo ceļa daļu, kas nesakrīt ar attālo serveri, bet atstāj pārējo ceļu. Piemēram, ja jūs bijāt / var / www / wp-content / kad izpildījāt komandu, sed bloks noņemtu / var / www, pamatojoties uz mūsu LDIR mainīgo, bet atstājiet / wp-content / daļu no tā.

    Otrais bloks tikai nodrošina, ka tiek noņemts viss iepriekšējais ceļš no faila nosaukuma, kas nodots skriptam, lai jūs vienkārši iegūtu faila nosaukumu.

    Piemēram, ja jūs nosaucāt skriptu up.sh un vadījāt to no vietējā / var / www / wp-content / plugins / direktorijā failā:

    up.sh myplugin.php

    Korpuss to būtu paplašinājis šādi:

    scp myplugin.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 to esmu lejupielādējis. Tādā veidā nebūs problēmu ar īpašām rakstzīmēm, kas nedarbojas ... un jā, es izmantoju skriptu, lai to augšupielādētu =)

    Lejupielādēt geek-uploader.sh

    Vienkārši ielieciet to kaut kur savā ceļā un nosauciet to, ko vēlaties. Es pārdēvēju raktuvi tikai uz augšu, tāpēc es varu vienkārši ierakstīt “up filename.txt”, lai augšupielādētu. Atcerieties arī to atvērt un mainīt mainīgos lielumus skripta sākumā, lai tie atbilstu jūsu videi.

    Šim skriptam jādarbojas ar kaut ko ar * nix apvalku un scp utilītu. Es izmantoju Ubuntu, bet tai vajadzētu strādāt ar Solaris, OS X vai pat Windows ar Cygwin.