IPMI ueber LAN auf Dell PowerEdge 2950 mit Ubuntu

bitmuncher

bitmuncher

Foren Gott
Ich sitze hier gerade an einem Dell PowerEdge Server und versuche krampfhaft den Zugriff auf IPMI ueber LAN einzurichten. Allerdings musste ich feststellen, dass das zum Einrichten des LAN-Devices notwendige Skript (bmcautoconf.sh) nirgends zu finden ist. Weiss evtl. jemand die Befehlsfolge, die durch dieses Skript ausgefuehrt wird oder kann mir ein entsprechendes Skript zukommen lassen? Das IPMI ist soweit eingerichtet und funktioniert auch (siehe http://poweredge.blog.de/ ) nur der Zugriff uebers LAN will halt nicht so, wie er soll.

Code:
root@traumato:~# IPMI_PASSWORD=meinpasswort ipmitool -I lan -H localhost -E chassis status
Error: Unable to establish LAN session
ipmi_lan_send_cmd failed to open intf
Error sending Chassis Status command

Die selbe Meldung bekomme ich auch, wenn ich Remote von meiner Workstation einen Zugriff versuche. Bei mir laeuft ipmitool 1.8.7 und OpenIPMI 2.0.7.

Edit: Auch ein zweites Problem ist mir gerade noch aufgefallen:

Code:
root@traumato:/home/blogde# ipmitool -I open chassis power diag
Chassis Power Control: Diag

Message from syslogd@traumato at Fri Jul 20 14:50:36 2007 ...
traumato kernel: [  291.961538] Uhhuh. NMI received for unknown reason 21 on CPU 0.

Message from syslogd@traumato at Fri Jul 20 14:50:36 2007 ...
traumato kernel: [  291.996978] Do you have a strange power saving mode enabled?

Message from syslogd@traumato at Fri Jul 20 14:50:36 2007 ...
traumato kernel: [  292.030836] Dazed and confused, but trying to continue

Jemand eine Idee, woran das liegen koennte? Ein Energiesparmodus ist naemlich garnicht eingestellt.
 
Zuletzt bearbeitet:
Ich weiß nicht ob das hilft, aber ich habe hier noch ein bmcautoconf.sh file.

Zum zweiten Problem: Kann es sein dass das am RAM liegt? Meine ich irgendwo mal gelesen zu haben. Oder vielleicht an der Kühlung des Gerätes.

#!/bin/bash
#
# Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# Redistribution of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# Redistribution in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# Neither the name of Sun Microsystems, Inc. or the names of
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# This software is provided "AS IS," without a warranty of any kind.
# ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
# INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
# SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
# FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
# OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
# SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
# OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
# PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
# LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
# EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
#
# You acknowledge that this software is not designed or intended for use
# in the design, construction, operation or maintenance of any nuclear
# facility.
#


# This script is designed for Sun Fire LX50, V60x and V65x systems.
# It may work with other setups as long as you use the correct channel
# and interface settings. It can be used on the V20z as long as you
# specify network settings on the command line.
#
# If the wrong channel is used you could lose network access to the
# box because your BMC will be sending out bad Gratuitous ARP packets
# with the wrong MAC address. You will need to use a console or
# override your local ARP cache with the correct addr.

usage ()
{
echo "
usage: $0 -c <chan> -i <interface> [options]
$0 -c <chan> [-v|w|x|y|z address] [options]

-c channel Which BMC channel to configure [-c help for more info]
-i interface Auto-configure BMC based on interface network settings
-v address Use specified IP address
-w address Use specified Netmask address
-x address Use specified MAC address
-y address Use specified Gateway IP address
-z address Use specified Gateway MAC address
-m interface Which IPMI interface to use [default linux=open solaris=lipmi]
-p password Set BMC channel password
-s string Set SNMP community string
-a interval Set Gratuitous ARP interval, off=0, default=4
-r Reset BMC channel, zero all network settings, disable
-d Debug mode, does not make any changes
"
exit 0;
}

channel_usage ()
{
echo "
Sun Fire V60x and V65x - Linux 2.4
eth0 = channel 6, top
eth1 = channel 7, bottom

Sun Fire V60x and V65x - Linux 2.6
eth0 = channel 7, bottom
eth1 = channel 6, top

Sun Fire V60x and V65x - Solaris x86
e1000g0 = channel 7, bottom
e1000g1 = channel 6, top

Sun LX50 - Linux
eth0 = channel 7, bottom
eth1 = channel 6, top

Sun LX50 - Solaris x86
le0 = channel 7, bottom
le1 = channel 6, top

Sun Fire V20z (-i option does not apply)
channel 1
"
exit 0
}

hex_to_ip ()
{
test $# -ge 1 || return;
local HEX B1 B2 B3 B4;
HEX=`echo $1 | tr '[:lower:]' '[:upper:]'`;
H1=`echo $HEX | cut -c1-2`
H2=`echo $HEX | cut -c3-4`
H3=`echo $HEX | cut -c5-6`
H4=`echo $HEX | cut -c7-8`
B1=`echo 10 o 16 i $H1 p | dc`
B2=`echo 10 o 16 i $H2 p | dc`
B3=`echo 10 o 16 i $H3 p | dc`
B4=`echo 10 o 16 i $H4 p | dc`
echo "$B1.$B2.$B3.$B4"
}

ipmitool_lan_set ()
{
[ $# -lt 1 ] && return
local PARAM=$1
local VALUE=
[ $# -ge 2 ] && VALUE=$2

if [ $DEBUG -gt 0 ]; then
echo "Setting LAN parameter $PARAM $VALUE"
echo "$IPMITOOL -I $IPMIINTF lan set $CHANNEL $PARAM $VALUE"
return
fi

$IPMITOOL -I $IPMIINTF lan set $CHANNEL $PARAM $VALUE
}

ipmitool_lan_reset ()
{
ipmitool_lan_set "ipsrc" "static"
ipmitool_lan_set "ipaddr" "0.0.0.0"
ipmitool_lan_set "netmask" "0.0.0.0"
ipmitool_lan_set "macaddr" "00:00:00:00:00:00"
ipmitool_lan_set "defgw ipaddr" "0.0.0.0"
ipmitool_lan_set "defgw macaddr" "00:00:00:00:00:00"
ipmitool_lan_set "password"
ipmitool_lan_set "snmp" "public"
ipmitool_lan_set "arp generate" "off"
ipmitool_lan_set "access" "off"
exit 0
}

DEBUG=0
LINUX=0
SOLARIS=0
CHANNEL=0
IFACE=
PASSWORD=
SNMP=
GRATARP=8
PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin

case `uname -s` in
Linux)
IPMIINTF=open
IPMITOOL=ipmitool
PING=ping
IFCONFIG=ifconfig
ARP=arp
ROUTE=route
;;
SunOS)
IPMIINTF=lipmi
IPMITOOL=ipmiadm
PING=ping
IFCONFIG=ifconfig
ARP=arp
ROUTE=route
;;
*)
echo "Invalid OS!"
exit 1
esac

while getopts "dhri:c:m:p:s:a:v:w:x:y:z:" OPTION ; do
case "$OPTION" in
i) IFACE=$OPTARG ;;
c) CHANNEL=$OPTARG ; test X$CHANNEL = Xhelp && channel_usage ;;
m) IPMIINTF=$OPTARG ;;
p) PASSWORD=$OPTARG ;;
s) SNMP=$OPTARG ;;
a) GRATARP=$OPTARG ;;
d) DEBUG=1 ;;
v) IP_ADDRESS=$OPTARG ;;
w) IP_NETMASK=$OPTARG ;;
x) MAC_ADDRESS=$OPTARG ;;
y) GATEWAY_IP=$OPTARG ;;
z) GATEWAY_MAC=$OPTARG ;;
r) ipmitool_lan_reset ;;
h) usage ;;
*) echo "Ignoring invalid option : -$OPTARG" ;;
esac
done

if [ ! -x `which $IPMITOOL` ]; then
echo "Error: unable to find $IPMITOOL"
exit 1
fi

if [ $CHANNEL -eq 0 ]; then
echo
echo "Error: you must specify a channel with -c"
echo
exit 1
fi

if [ "$IFACE" ]; then
if ! $IFCONFIG $IFACE 2>/dev/null | grep "inet " >/dev/null 2>&1 ; then
echo
echo "Error: unable to find interface $IFACE"
echo
exit 1
fi
echo "Auto-configuring $IFACE (channel $CHANNEL)"
fi

case `uname -s` in
SunOS)
if [ X$IFACE != X ]; then
if [ X$IP_ADDRESS = X ]; then
IP_ADDRESS=`$IFCONFIG $IFACE | grep inet | awk '{print $2}'`
fi
if [ X$IP_NETMASK = X ]; then
HEX_NETMASK=`$IFCONFIG $IFACE | grep netmask | awk '{print $4}'`
IP_NETMASK=`hex_to_ip $HEX_NETMASK`
fi
if [ X$MAC_ADDRESS = X ]; then
MAC_ADDRESS=`$IFCONFIG $IFACE | grep ether | awk '{print $2}'`
fi
if [ X$GATEWAY_IP = X ]; then
GATEWAY_IP=`$ROUTE -n get default | grep gateway: | awk '{print $2}'`
fi
if [ X$GATEWAY_MAC = X ]; then
$PING -i $IFACE $GATEWAY_IP 1 >/dev/null 2>&1
GATEWAY_MAC=`$ARP $GATEWAY_IP | awk '{print $4}'`
if [ X$GATEWAY_MAC = Xno ]; then
GATEWAY_MAC=
fi
fi
fi
;;

Linux)
if [ X$IFACE != X ]; then
if [ X$IP_ADDRESS = X ]; then
IP_ADDRESS=`$IFCONFIG $IFACE | grep inet | awk -F"[:[:space:]]+" '{print $4}'`
fi
if [ X$IP_NETMASK = X ]; then
IP_NETMASK=`$IFCONFIG $IFACE | grep Bcast | awk -F"[:[:space:]]+" '{print $8}'`
fi
if [ X$MAC_ADDRESS = X ]; then
MAC_ADDRESS=`$IFCONFIG $IFACE | grep HWaddr | awk '{print $5}'`
fi
if [ X$GATEWAY_IP = X ]; then
GATEWAY_IP=`$ROUTE -n | awk '/^0.0.0.0/ {print $2}'`
fi
if [ X$GATEWAY_MAC = X ]; then
$PING -q -c1 $GATEWAY_IP >/dev/null 2>&1
GATEWAY_MAC=`$ARP -an | grep "$GATEWAY_IP[^0-9]" | awk '{print $4}'`
fi
fi
;;
esac

if [ X$IP_ADDRESS != X ]; then
ipmitool_lan_set "ipsrc" "static"
ipmitool_lan_set "ipaddr" "$IP_ADDRESS"
fi

if [ X$IP_NETMASK != X ]; then
ipmitool_lan_set "netmask" "$IP_NETMASK"
fi

if [ X$MAC_ADDRESS != X ]; then
ipmitool_lan_set "macaddr" "$MAC_ADDRESS"
fi

if [ X$GATEWAY_IP != X ]; then
ipmitool_lan_set "defgw ipaddr" "$GATEWAY_IP"
fi

if [ X$GATEWAY_MAC != X ]; then
ipmitool_lan_set "defgw macaddr" "$GATEWAY_MAC"
fi

if [ X$PASSWORD != X ]; then
ipmitool_lan_set "password" "$PASSWORD"
fi

if [ X$SNMP != X ]; then
ipmitool_lan_set "snmp" "$SNMP"
fi

if [ "$GRATARP" -ne 0 ]; then
ipmitool_lan_set "arp generate" "on"
ipmitool_lan_set "arp interval" "$GRATARP"
else
ipmitool_lan_set "arp generate" "off"
fi

echo "Setting channel authentication capabilities"
ipmitool_lan_set "auth callback,user,operator,admin" "md2,md5"

echo "Enabling channel $CHANNEL"
ipmitool_lan_set "access" "on"
ipmitool_lan_set "user"

exit 0
 
Danke für das Skript. Werde es mal damit probieren. Wie mir der Dell-Support mitteilte liegt Problem Nummer 2 wohl daran, dass der IPMI-Kram bei Ubuntu derzeit nur auf IBM-Maschinen fehlerfrei funktioniert. Ubuntu und Dell sind da aber schon in Verhandlung, so dass zu hoffen bleibt, dass in nächster Zeit auch die IPMI-Unterstützung für Dell-Server besser funktionieren wird.
 
Unter Debian dürfte das /usr/share/ipmitool/bmclanconf sein ...
 

Anhänge

  • bmclanconf.txt
    8,2 KB · Aufrufe: 3

Ähnliche Themen

OpenSuse 12.3 / Tiefschlaf funktioniert nicht

Debian Routing Problem

NagiosGrapher 1.7.1 funktioniert nicht

Rollei Mini Wifi Camcorder

OpenVPN - Server kann clients nicht erreichen.

Zurück
Oben