@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