work_sript/07.bmc_tool_script/Windows_CollectOnekeylog.bat
2025-06-04 15:27:45 +08:00

87 lines
2.3 KiB
Batchfile

@echo off
setlocal
:: Param Check
if "%1"=="" goto :USAGE
if "%2"=="" goto :USAGE
if "%3"=="" goto :USAGE
:: ==== Script will start here
::echo Command Infomation
::echo BMC_IP: %1
::echo USER: %2
::echo PASSWORD: %3
set "BMC_IP=%1"
set "USER=%2"
set "PASSWORD=%3"
set "BMC_INFO=%USER%:%PASSWORD%"
set "redfish_fru_result=%CD%\fru_info.json"
:: Step0. Get BMC SN
echo __________
echo Opertion 1 : Check Network Connection with BMC...
curl -k -u %BMC_INFO% -X GET "https://%BMC_IP%/redfish/v1/Systems/1/public/FRU" > %redfish_fru_result%
if %ERRORLEVEL% neq 0 (
echo Connect to BMC Failed
exit /b 1
)
for /f "delims=" %%a in ('
powershell -command "$json = Get-Content -Path '%redfish_fru_result%' -Raw | ConvertFrom-Json; $json.'board'.'Board Serial'"
') do set "value=%%a"
set "BoardSN=%value%"
:: Setp1. Get local time stamp
set "dt=%DATE% %TIME%"
for /f "tokens=2 delims==" %%a in ('wmic OS get LocalDateTime /value') do set "dt=%%a"
set "year=%dt:~0,4%"
set "month=%dt:~4,2%"
set "day=%dt:~6,2%"
set "hour=%dt:~8,2%"
set "minute=%dt:~10,2%"
set "second=%dt:~12,2%"
set "timestamp=%year%%month%%day%T%hour%%minute%%second%"
::echo TimeStamp: %timestamp%
set "LogFile=%CD%\Product_%BoardSN%_%timestamp%.tar.gz"
:: Step2. Post Collect Onekeylog Request to BMC by redfish
echo __________
echo Opertion 2 : Post Request to BMC...
curl -k -u %BMC_INFO% -X POST -H "Content-Length: 0" "https://%BMC_IP%/redfish/v1/Managers/1/LogServices/Actions/public/CollectAllLog"
if %ERRORLEVEL% neq 0 (
echo Post Request Error
exit /b 1
)
:: Step3. Wait 150s to Complete Collect
echo __________
echo Opertion 3 : Wait 150s for bmc to collect onekeylog...
timeout /t 150 /nobreak
:: Step4. Download Onekeylog
echo __________
echo Opertion 4 : Download onekeylog now ...
curl -k -u %BMC_INFO% -X POST -H "Content-Length: 0" "https://%BMC_IP%/redfish/v1/Managers/1/LogServices/Actions/public/DownloadAllLog" --output %LogFile%
if %ERRORLEVEL% neq 0 (
echo Download Onekeylog Error
exit /b 1
)
:: === Complete
echo __________
echo Opertion 5 : Success Download Onekeylog
echo Onekeylog Path: %LogFile%
goto :END
:USAGE
echo Invalid command format
echo Script Format : CollectOnekeylog.bat [bmc ip] [username] [password]
:END
endlocal