#!/bin/bash # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later # Copyright 2013-2014 IBM Corp. set -e BMC_HOST=$1 RECORD_ID=$2 BMC_USER=admin BMC_PASS=admin if [ -z "$BMC_HOST" -o -z "$RECORD_ID" ]; then echo "Usage: $0 " echo "Example: $0 bmc 0xa > pel.bin" echo '' echo 'Record ids can be found using ipmitool with the "sel list" command. Records with' echo 'a description of "OEM record df" contain extended SEL information (in PEL' echo 'format) which can be extracted with this tool.' exit -1 fi # Convert a number into 2 hex-bytes in little-endian order function conv_le { echo $(for i in $(printf %04x $1 | grep -o .. | tac); do echo -n "0x$i "; done) } function conv_native { echo -n "0x${2}${1}" } record=$(conv_le $2) offset=0 progress=0 while [ $progress = 0 ]; do result=$(ipmitool -H ${BMC_HOST} -I lan -U ${BMC_USER} -P ${BMC_PASS} raw 0x32 0xf1 ${record} $(conv_le ${offset})) len=$(conv_native $(echo ${result} | cut -d " " -f 1-2)) progress=$(($(echo ${result} | cut -d " " -f 3))) data="$data "$(echo -n ${result} | cut -d " " -f 6-) offset=$(($offset + ${#data}/3)) done echo -n ${data} | cut -d " " -f 1-$(($len)) | xxd -r -p