Kotisivu » miten » Shell-komentosarja, jos haluat ladata tiedoston samaan alikansioon Remote Serverissä

    Shell-komentosarja, jos haluat ladata tiedoston samaan alikansioon Remote Serverissä

    Erittäin yleinen web-kehittäjän tehtävä on ladata yksittäinen tiedosto kehityskentän alihakemistosta samaan alihakemistoon etäpalvelimessa. Valitettavasti tämä päättyy aina olemaan ärsyttävä manuaalinen prosessi, joka sisältää hakemistojen vaihtamisen molemmissa palvelimissa ja tuhlaa paljon aikaa.

    Joten, olen ottanut itseni itse kirjoittamaan shell-komentosarjan automatisoimaan tämän minulle, käyttämällä scp: ää suojatun tiedostojen kopioimiseksi. (Tärkeä sivu Huomautus: ftp on hirveän epävarma, käytä WinSCP: tä sen sijaan)

    Tärkein ongelma ratkaistavana oli se, että kehityskoneellani asennetulla WordPress-asennuksella on erilainen tukiasema kuin palvelimeni asennus. Kehityskoneessani se on / var / www, ja palvelimessani on jotain enemmän kuin / var / www / howtogeek / docs /. Päätin vain siirtää ne muuttujiksi komentosarjan alussa:

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

    Huomaa, että paikallisessa hakemistossa (LDIR) on \ t Tämä johtuu siitä, että aiomme siirtää tämän sed-komentoon myöhemmin käsikirjoituksessa, joten meidän on vältettävä nämä arvot. Olen varma, että siellä on jokin muu tapa, mutta en tiedä siitä.

    Seuraavaksi perustin automaattiset ssh-kirjautumiset. Tätä varten sinun on ensin suoritettava ssh keygen -apuohjelma seuraavasti:

    ssh-keygen -t rsa

    Sitten sinun täytyy kopioida ~ / .ssh / id_rsa.pub-tiedosto etäpalvelimen ~ / .ssh / author_keys-tiedostoon. Jos ~ / .ssh-hakemisto on jo luotu etäpalvelimelle (ehkä haluat tarkistaa), voit suorittaa tämän komennon kopioimalla avaimet yli:

    cat ~ / .ssh / id_rsa.pub | ssh-käyttäjä @ isäntänimi 'cat >> .ssh / valtuutettu_keys'

    Nyt meillä on automaattiset ssh-kirjautumiset, jotka mahdollistavat scp-apuohjelman käytön ilman salasanaa. Katsokaamme nyt scp-komentoa, jota käytämme komentosarjassa:

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

    $ 1 on parametri, jonka välität tiedostonimen komentosarjalle. $ SSHSERVER ja $ RDIR ovat muuttujia, jotka määritämme komentosarjan alussa käyttäjän @ isäntänimen ja edellisen etäyhteyden määrittämiseksi.

    Ensimmäinen lohko, joka alkaa pwd | sed: llä, ottaa nykyisen hakemistopolun ja nauhat pois edellisen osan polusta, joka ei vastaa etäpalvelinta, mutta jättää loput reitistä. Jos esimerkiksi olit / var / www / wp-content / kun suoritit komennon, sed-lohko poistaisi / var / www -palvelun LDIR-muuttujamme perusteella, mutta jätä / wp-sisältö / osa siitä.

    Toisessa lohkossa vain varmistetaan, että poistat koko edellisen polun pois tiedostonimestä, joka on annettu skriptiin, niin saat vain tiedostonimen.

    Esimerkiksi, jos olet nimittänyt komentosarjan up.sh ja juoksi sitä paikalliselta / var / www / wp-content / plugins / hakemistosta tiedostossa:

    up.sh myplugin.php

    Kuori olisi laajentanut tätä seuraavasti:

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

    Sen sijaan, että yritän luoda omaa komentosarjatiedostoa artikkelin perusteella, olen antanut sen ladata. Näin ei ole mitään ongelmia erikoismerkkien kanssa, jotka eivät toimi ... ja kyllä, käytin ladattavaa komentosarjaa itselleen =)

    Lataa geek-uploader.sh

    Laita se jonnekin polulle ja nimeä se mitä haluat. Nimein kaivoksen vain "ylös", joten voin vain ladata "up filename.txt". Muista myös avata se ja vaihtaa komentosarjan alussa olevia muuttujia vastaamaan ympäristöäsi.

    Tämän skriptin pitäisi toimia kaikilla * nix-kuorella ja scp-apuohjelmalla. Käytän Ubuntua, mutta sen pitäisi toimia Solariksen, OS X: n tai jopa Windowsin kanssa, kun Cygwin on asennettu.