29Jun

Схелл Сцрипт за уплоад фајлова у исти поддиректориј на удаљеном серверу

click fraud protection

Заједнички задатак за веб програмера је отпремање једне датотеке из поддиректоријума вашег развојног поља у исти поддиректориј на удаљеном серверу.Нажалост, ово се увек завршава као досадан ручни процес који укључује пребацивање директоријума на оба сервера и троши велики временски период.

Дакле, преузео сам на себе да напишем скрипту за скрипту да бих аутоматизовао ово за мене, користећи сцп за сигурно копирање датотека.(Важна страна Напомена: фтп је страшно несигуран, умјесто ВинСЦП умјесто тога)

Главни проблем који је ријешен био је то што моја инсталација ВордПресса на мојој развојној машини има другачији основни директориј од инсталације на мом серверу.На мом развојном рачунару то је /var/ ввв, а на мом серверу је нешто више као /var/www/howtogeek/docs/.Одлучио сам да их пребацим у променљиве на почетку скрипте, овако:

ССХСЕРВЕР=тхегеек@хостнаме.цом
РДИР = /var/www/howtogeek/ доцс
ЛДИР = '\ / вар \ / ввв'

Имајте на уму да локални директориј( ЛДИР) у скрипту има \ прије сваког / на путањи.То је зато што ћемо ово проћи касније у сценарију седом, тако да морамо избјећи те вриједности.Сигуран сам да постоји неки други начин око овога, али ја то не знам.

instagram viewer

Затим постављам аутоматизоване ссх пријаве.Да бисте то урадили, потребно је прво покренути ссх кеиген услужни програм као што је то случај:

ссх-кеиген -т рса

Затим морате копирати датотеку ~ /.ssh/ ид_рса.пуб у датотеку ~ /.ssh/ аутхоризед_кеис на удаљеном серверу.Ако је ~ /. ссх директоријум већ креиран на удаљеном серверу( можда би желио проверити), онда можете покренути ову наредбу да бисте копирали кључеве преко:

цат ~ /.ssh/ ид_рса.пуб |ссх усер @ хостнаме 'цат & гт; & гт;.ссх / аутхоризед_кеис '

Сада имамо аутоматизоване ссх пријаве, што ће омогућити коришћење сцп услужног програма без лозинке.Сада да погледамо сцп наредбу коју ћемо користити у скрипту:

сцп $ 1 $ ССХСЕРВЕР: $ РДИР`пвд | сед \ с / ${ ЛДИР} // "` / `ецхо $ 1 | сед 'с /.* \ /// ''

$ 1 је параметар који ћете пренети у скрипту за име датотеке које покушавате да пошаљете.$ ССХСЕРВЕР и $ РДИР су променљиве које ћемо поставити на почетку скрипте да подесите корисничко име @ хост и претходну удаљену путању.

Први блок који почиње са пвд | седом узима тренутну путању директоријума и уклања претходни дио пута који се не поклапа са удаљеним сервером, али оставља остатак стазе.На примјер, ако сте били у /var/www/ вп-садржају / када сте покренули команду, блок седа би смањио /var/ ввв на основу наше ЛДИР варијабле, али оставите / вп-цонтент / дио њега.

Други блок само спречава читаву претходну путању од филма пренијети на скрипту, тако да једноставно добијете име датотеке.

На пример, ако сте назвали скрипту уп.сх и покренули је из вашег локалног /var/www/ вп-цонтент /plugins/ директорија у датотеку:

уп.сх миплугин.пхп

Ово би било проширено схелл-ом као следеће:

сцпмиплугин.пхп тхегеек@хостнаме.цом: /var/www/howtogeek/docs/ вп-цонтент /plugins/ миплугин.пхп

Уместо да покушам да креирам сопствену скрипту на основу чланка, обезбедио сам вам да преузмете.На тај начин неће бити никаквих проблема са специјалним карактерима који не раде. .. и да, искористио сам сценарио за уплоад себе =)

Довнлоад геек-уплоадер.сх

Само га ставите негде на свој пут и назовите га шта год желите.Преименовао сам своје само на "горе", тако да могу само да упишем "уп филенаме.ткт" за отпремање.Такође не заборавите да га отворите и промените променљиве на почетку скрипте да бисте се подударали са окружењем.

​​Ова скрипта треба да ради на било чему помоћу * ник схелл-а и сцп-програма.Ја користим Убунту, али би требало да ради на Соларис, ОС Кс, или чак Виндовс са Цигвин инсталираним.