Cygal.net.pl

Systemy, Sieci i takie tam :)

Wgrywanie plików na kilka serwerów linuxowych z poziomu systemu Windows

Kiedy posiadamy serwery spięte w cluster HA i zachodzi potrzeba aktualizacji jakieś aplikacji na naszym serwerze aplikacyjnym borykamy się z koniecznością wgrania tych samych plików na kilka serwerów aplikacyjnych. Na dłuższa metę wgrywanie plików na kilka maszyn jest denerwujące. A jak wiadomo Admin to leniwe stworzenie :). W tym celu napisałem prosty skrypt Batchowy. który korzysta z pscp z putty. Dzięki temu prostemu skryptowi można wgrać pliki z katalogu c:podgrywki na kilka serwerów jednym przyciskiem klawiatury. W skrypcie należy użyć własnych adresów IP oraz odpowiednich haseł i użytkowników.

[bash]
@echo off
Color 0A
cls
:Start
echo =========================Multihost SCP uploader================================
echo Wgrywa pliki z katalogu c:podgrywki do katalogu /tmp/ na zdalnym serwerze
echo dla wybranych serwerow aplikacyjnych serweraappl lub apliserw.
echo Mozna rowniez pobrac plik ze zdalnego serwera z katalogu /tmp/ do katalogu
echo c:podgrywki a nastepnie wgrac na pozostale serwery.
echo ===============================================================================
echo.
echo [ MENU ]
echo.
echo ———————————[ WGRAJ ]———————————-
echo [ 1 ]. all – ( wszystkie serwerappl bez apliserw )
echo [ 2 ]. serwerappl1
echo [ 3 ]. serwerappl2
echo [ 4 ]. serwerappl3
echo [ 5 ]. serwerappl4
echo.
echo [ 6 ]. wszystkie apliserw – ( bez serwerappl )
echo [ 7 ]. apliserw1
echo [ 8 ]. apliserw2
echo.
echo ———————————[ POBIERZ ]———————————–
echo [ 9 ]. pobierz plik – ( z serwerapplX lub apliserwX )
echo.
echo [ 0 ]. Koniec
echo.
echo.

set /p choice=Wybierz opcje wpisujac cyfre od 0 do 9 i nacisnij ENTER:
set choice=%choice:~0,1%

IF "%choice%"=="1" GOTO all
IF "%choice%"=="2" GOTO appl1
IF "%choice%"=="3" GOTO appl2
IF "%choice%"=="4" GOTO appl3
IF "%choice%"=="5" GOTO appl4
IF "%choice%"=="6" GOTO apliserw
IF "%choice%"=="7" GOTO apliserw1
IF "%choice%"=="8" GOTO apliserw2
IF "%choice%"=="9" GOTO pobierz
IF "%choice%"=="0" GOTO Koniec
echo invalid choice

GOTO Start

:all
ECHO Trwa wgrywanie na wszytkie serwerapple
FOR %%A in (172.17.xxx.xxx 172.17.xxx.xxx 172.17.xxx.xxx 172.17.xxx.xxx) DO pscp -pw password c:podgrywki*.* admin@%%A:/tmp/
pause >null
cls
GOTO Start

:appl4
ECHO Trwa wgrywanie na serwerappl4
pscp -pw password c:podgrywki*.* admin@172.17.xxx.xxx:/tmp/
pause >null
cls
GOTO Start

:appl3
ECHO Trwa wgrywanie na serwerappl3
pscp -pw password c:podgrywki*.* admin@172.17.xxx.xxx:/tmp/
pause >null
cls
GOTO Start

:appl2
ECHO Trwa wgrywanie na serwerappl2
pscp -pw password c:podgrywki*.* admin@172.17.xxx.xxx:/tmp/
pause >null
cls
GOTO Start

:appl1
ECHO Trwa wgrywanie na serwerappl1
pscp -pw password c:podgrywki*.* admin@172.17.xxx.xxx:/tmp/
pause >null
cls
GOTO Start

:apliserw
ECHO Trwa wgrywanie na apliserw1 oraz apliserw2
FOR %%A in (172.15.xxx.xxx 172.15.xxx.xxx) DO pscp -pw password c:podgrywki*.* admin@%%A:/tmp/
pause >null
cls
GOTO Start

:apliserw1
ECHO Trwa wgrywanie na apliserw1
pscp -pw password c:podgrywki*.* admin@172.15.xxx.xxx:/tmp/
pause >null
cls
GOTO Start

:apliserw2
ECHO Trwa wgrywanie na apliserw2
pscp -pw password c:podgrywki*.* admin@172.15.xxx.xxx:/tmp/
pause >null
cls
GOTO Start

:pobierz
cls
set /p appl=Podaj nazwe sewera (np.: apliserw1 ):
set /p plik=Podaj nazwe pliku do pobrania:
ECHO.
ECHO Trwa pobieranie pliku "%plik%" ze zdalnego serwera "%appl%"
pscp -pw password admin@%appl%:/tmp/%plik% c:podgrywki
pause >null
cls
GOTO Start

:Koniec
echo Koncze prace skryptu
pause >null
rm null
[/bash]

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *


Time limit is exhausted. Please reload CAPTCHA.