通常,如果我們遇到跨多台伺服器的環境

會有一個像是Deploy Server的角色,負責部屬這些應用程式

也因為這樣,Log通常放在各主機中,取用的時候變得相對複雜

需要一個反向的方式去收集這些資料

這邊分享一個先前寫好的指令

—————————————————————————————————-

:: Please double click this batch.
:: DON’T update date in this text.

@echo off

::指定打包起來的目錄名稱
::Set Folder Name
::SET folderprefix=20150423
SET /P folderprefix=Input Date(yyyyMMdd)[Enter]:

::指定想要蒐集的日期
::Set DATE
::SET checkdate=04/23/2015
SET checkdate=%folderprefix:~4,2%/%folderprefix:~6,2%/%folderprefix:~0,4%

::由於多台電腦,這邊指定多個以IP為命名基礎的資料夾
::抓回來的Log直接放到各自的資料夾中

SET A1=”X:%folderprefix%_PROD_Log1XX.1XX.AAA”
SET A2=”X:%folderprefix%_PROD_Log2XX.2XX.AAA”

SET B1=”X:%folderprefix%_PROD_Log1XX.1XX.BBB”
SET B2=”X:%folderprefix%_PROD_Log2XX.2XX.BBB”
….
..
..

mkdir X:%folderprefix%_PROD_Log

mkdir %A1%
mkdir %A2%
mkdir %B1%
mkdir %B2%

::Get Logs from Server

ECHO OFF
ECHO Mount remote drivers via net use due to DEV servers in different domain

::如果試跨主機,有時候會有權限的問題,這邊可以下NET USE,改使用Server的帳號登入
SET userid=administrator
echo
rem SET /P pw= Please enter your password:
SET pw=password

NET USE l: \123.123.123.168l$  %pw% /USER:%userid%
forfiles /P l:LOGSXXX1 /m *.* /D %checkdate% /S /C “cmd /c xcopy @file %A1%”
forfiles /P l:LOGSXXX2 /m *.* /D %checkdate% /S /C “cmd /c xcopy @file %A2%”
NET USE l: /delete

NET USE l: \123.123.123.196l$  %pw% /USER:%userid%
forfiles /P l:LOGSXXX1 /m *.* /D %checkdate% /S /C “cmd /c xcopy @file %B1%”
forfiles /P l:LOGSXXX2 /m *.* /D %checkdate% /S /C “cmd /c xcopy @file %B2%”
NET USE l: /delete

::抓完的Log通常量不小,直接在這使用7z打包資料夾,方便傳輸回來查看用

cd /d “C:Program Files7-Zip”
7z.exe a X:%folderprefix%_PROD_Log.7z X:%folderprefix%_PROD_Log

echo
echo
echo
echo DONE.
PAUSE

Leave a Reply

Your email address will not be published. Required fields are marked *