samedi 25 février 2012

Skript nahrát soubor do stejného podadresáře vzdáleném serveru

Velmi časté úkol pro Web Developer se nahrává jeden soubor z podadresáře na rozvoj pole se stejným adresáře na vzdáleném serveru. Bohužel, vždy to skončí být nepříjemný proces, který zahrnuje ruční přepínání adresáře na obou serverech a odpady velké množství času.

Takže jsem vzal to na sebe napsat skript pro automatizaci to pro mě, pomocí scp pro bezpečné kopírování souborů. (Důležité Side Poznámka: FTP je strašně nejistá, použijte WinSCP instead)

Hlavním problémem k řešení je, že moje WordPress nainstalovat na můj vývoj zařízení má jiný základ, než instalační adresář na svém serveru. Na mém počítači je to vývoj / var / www, a na mém serveru, je něco jako / var / www / howtogeek / docs /. Rozhodl jsem se jen přesunout do těchto proměnných na začátku skriptu, takto:

SSHSERVER=thegeek@hostname.com
RDIR=/var/www/howtogeek/docs
LDIR = ' / var / www "

Všimněte si, že místní adresář (LDIR) ve skript před každým / v cestě. To proto, že budeme předávat toto do sed příkaz později ve skriptu, takže se musíme vyhnout tyto hodnoty. Jsem si jistý, že je nějaký jiný způsob, jak vyřešit, ale já jsem vědom.

Dále jsem nastavit automatické přihlašování ssh. K tomu je nutné nejprve spustit ssh keygen utility jako tak:

ssh-keygen-t rsa

Pak je potřeba zkopírovat ~ / .ssh / id_rsa.pub soubor ~ / .ssh / authorized_keys soubor na vzdáleném serveru. . Pokud je ~ / ssh adresář již vytvořen na vzdáleném serveru (chtít podívat), pak můžete spustit tento příkaz ke kopírování klíčů přes:

kočka ~ / .ssh / id_rsa.pub | ssh user @ hostname "kočka>> .ssh / authorized_keys"

Nyní máme automatické přihlašování ssh, které umožní pomocí nástroje scp bez hesla. Nyní se pojďme podívat na příkaz scp budeme používat ve skriptu:

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

$ 1 je parametr, který bude předávat k zápisu na souboru, který se pokoušíte nahrát. $ $ A SSHSERVER RDIR jsou proměnné budeme stanoven na začátku skriptu nastavit user @ hostname a předchozí vzdálenou cestu.

První blok, který začíná pwd | sed se v aktuálním adresáři cestu a pásy z předchozí části cesty, která neodpovídá na vzdálený server, ale ponechává zbytek cesty. Například, pokud jste byli ve / var / www / wp-content / při spuštění příkazu by sed bloku svléknout / var / www na základě našich LDIR variabilní, ale ponechat / wp-content / část .

Druhý blok jen dbá svléknout před celou cestu z názvu souboru přešel na script, takže stačí si název souboru.

Například, pokud jste jmenoval skript up.sh a běžel z vašeho local / var / www / wp-content / plugins / na soubor:

up.sh myplugin.php

To by byl rozšířen o shell jako následující:

scp myplugin.php thegeek@hostname.com: / var / www / howtogeek / docs / wp-content / plugins / myplugin.php

Místo toho se snaží vytvořit svůj vlastní skript na základě článku, jsem za předpokladu, že si můžete stáhnout. Tak nedojde k žádné problémy se speciálními znaky nefunguje ... A ano, jsem použil skript nahrát sám =)

Stáhnout geek-uploader.sh

Jen dejte je někde v cestě, a to jméno, co chcete. Jsem přejmenoval na mně jen "up", tak jsem si jen typu "až filename.txt", pro nahrání. Také si pamatuji, otevřít ho a změny proměnných na začátku skriptu, aby odpovídal vašemu prostředí.

Tento skript by měl fungovat na něčem s * nix shell a utility scp. Já používám Ubuntu, ale měl by pracovat na Solaris, OS X, nebo Windows s Cygwin nainstalován.

Aucun commentaire:

Enregistrer un commentaire