#!/bin/bash set -e # Get time from ME via ipmb # The last 4 bytes are the epoch time, e.g. # (iyyyyay) 0 11 0 72 0 4 18 169 82 95 ret=$(busctl call xyz.openbmc_project.Ipmi.Channel.Ipmb "/xyz/openbmc_project/Ipmi/Channel/Ipmb" org.openbmc.Ipmb sendRequest yyyyay 0x01 0x0a 0x00 0x48 0) IFS=' ' read -r -a a <<< "${ret}" if [ "${a[1]}" -ne 0 ] then echo "Failed to get time from ME: ${ret}" exit 1 fi t0=$((a[7])) t1=$((a[8]*256)) t2=$((a[9]*256*256)) t3=$((a[10]*256*256*256)) t=$((t0+t1+t2+t3)) echo "Setting date to ${t}" date -s @${t}