87 lines
2.3 KiB
Batchfile
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
|