I use something like this on a variety of PowerEdge R<something> systems:
#!/usr/bin/perl -w
#
# Jesper Nyerup <nyerup@one.com>
my $ipmitool = '/usr/bin/ipmitool';
my @chararray = split(//, join(' ', @ARGV));
usage() if (@chararray == 0 or @chararray > 14);
system("$ipmitool raw 0x6 0x58 193 0x0 0x0 ".
sprintf('0x%x ', scalar(@chararray)).
join(' ', map { sprintf('0x%x', ord($_)) } @chararray));
system("$ipmitool raw 0x6 0x58 0xc2 0x0 0x0 ".
"0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0");
sub usage {
print <<EOF;
Usage: $0 <string>
Max. 14 characters
EOF
exit 1
}
I haven't found a complete reference of Dell's proprietary IPMI commands, but according to the documentation I found here, the first invocation of ipmitool
puts the supplied string into one of the display's registers, and the second one flips the display buffer to actually show this.
EDIT: I put this snippet on Github, for future reference.