15.08.2011

Скрипт. Заливка файлов на FTP

Этот скрипт был написан для предотвращения нежелательных последствий от BSOD. Скрипт просматривает папку с дампами BSOD. Если дампы есть (синий экран был), то создаёт на FTP-сервере папку с датой создания дампа в качестве имени, а внутри неё папку с именем сбойной машины. И уже в эту папку копирует дампы. Затем переименовывает дампы в *.dmp.old, чтобы на следующий день их не копировать. Если скрипт запущен впервые, он копирует дампы как положено (каждый на свою дату).

Краткое описание скрипта:

  1. Секция check. Проверяет, есть ли уже дампы. Если нет, скрипт заканчивает свою работу. Если да - переходит на следующую секцию.
  2. Секция makeftpcommand. Создаёт файл с именем script, в который пишет команды для работы с FTP.
  3. Секция makedirectory. Анализирует папку с дампами и записывает в script команду для создания папки на FTP-сервере с именем вида дата/имя_машины.
  4. Секция copyfiles. Заливает дамп в нужную папку.
  5. Секция rename. Переименовывает дамп в *.dmp.old, чтобы при следующем запуске не копировать уже скопированные файлы.
  6. Оставшиеся строки закрывают файл script, выполняют его и удаляют.



@echo on
@echo =======================================
@echo Copying memory dumps on FTP-server
@echo =======================================
@echo Script started


set $SRC="%systemroot%\minidump\"


:check
@echo Checking files
@if exist $SRC\*.dmp goto makeftpcommand


:makeftpcommand
set addr=script
echo.open 127.0.0.1>> %ADDR%
echo.anonymous>> %ADDR%
echo.>> %ADDR%
echo.binary>> %ADDR%


:makedirectory
@echo Making directories
for %%a in (%$SRC%) do (for /f "tokens=1" %%b in ("%%~ta") do (echo.mkdir \%%~b\%computername%>>%ADDR%))


:copyfiles
@echo Copying files
for %%a in (%$SRC%) do (for /f "tokens=1" %%b in ("%%~ta") do (echo.cd %%~b\%computername%>>%ADDR% && echo.send %%a >>%ADDR% && echo.cd ../..>>%ADDR%))


:rename
for /f "tokens=1" %%a in ('dir /b %$SRC%\*.*') do ren %$SRC%\%%a %%a.old


echo.bye>> %ADDR%
ftp.exe -s:%ADDR% 
del /F /Q script

Комментариев нет:

Отправить комментарий