通常,如果我們遇到跨多台伺服器的環境
會有一個像是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
cd /d “C:Program Files7-Zip”
7z.exe a X:%folderprefix%_PROD_Log.7z X:%folderprefix%_PROD_Log
echo
echo
echo
echo DONE.
PAUSE
