Почетна » како да » Схелл скрипта за учитавање датотеке у исти поддиректоријум на удаљеном серверу

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

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

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

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

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

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

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

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

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

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

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

    сцп $ 1 $ ССХСЕРВЕР: $ РДИР'пвд | сед “с / $ ЛДИР //” '/' ецхо $ 1 | сед 'с /.* \ т

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

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

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

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

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

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

    сцп миплугин.пхп тхегеек@хостнаме.цом: /вар/ввв/ховтогеек/доцс/вп-цонтент/плугинс/миплугин.пхп

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

    Скидање геек-уплоадер.сх

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

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