Einleitung
In diesem Dokument wird beschrieben, wie Sie manuelle XML-API-Aufrufe an den Cisco Integrated Management Controller (CIMC) durchführen.
Verwendete Komponenten
- Ein Linux-Rechner (jede Distribution).
- Netzwerkverbindung zwischen dem Linux-System und dem Cisco CIMC (ein erfolgreicher Ping-Test ist ausreichend).
Anmerkung: Die in diesem Handbuch verwendeten Dateinamen (main.sh, login.xml, get_summary.xml) sind beliebig. Es steht Ihnen frei, Ihre eigenen Namenskonventionen zu verwenden, sofern diese während des gesamten Vorgangs ordnungsgemäß referenziert werden.
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle kennen.
Hintergrundinformationen
In dieser Demonstration wird ein Bash-Skript namens "main.sh" verwendet, um API-Aufrufe des Servers auszuführen.
Bitte beachten Sie, dass auch alternative Methoden, wie CURL (direkt von CLI) oder Python, dieses Ergebnis erzielen können.
XML-API-Aufrufe für CIMC
Die CIMC-XML-API erfordert einen ersten Authentifizierungsschritt unter Verwendung eines "aaaLogin"-API-Aufrufs. Dabei wird ein Sitzungscookie abgerufen, das dann zur Authentifizierung aller nachfolgenden API-Aufrufe verwendet wird.
Schritt 1
Erstellen Sie zunächst eine Datei mit dem Namen main.sh auf dem Linux-Remotecomputer. Diese Datei enthält ein Bash-Skript, das zum Senden der API-Aufrufe verwendet wird.
Das Skript main.sh wird in dieser Übung mehrmals ausgeführt: zunächst für die Authentifizierung und dann für den Abruf von Informationen vom CIMC bei nachfolgenden Aufrufen.
Hier ist der Inhalt der Datei main.sh:
#!/bin/bash
# CONFIGURATION - Edit these variables
CIMC_IP="X.X.X.X" # <<<<<<<< Customer CIMC IP address
USERNAME="admin"
PASSWORD="xxxxxxxx" # <<<<<<< CIMC Password in plaintext
XML_PAYLOAD_FILE="login.xml" # <<<<<<< Referencing the login.xml file for authentication and cookie retrieval
CIMC_URL="https://${CIMC_IP}/nuova" # <<<<<<< Call is made to this URL
# Check if payload file exists
if [ ! -f "$XML_PAYLOAD_FILE" ]; then
echo "Error: XML payload file '$XML_PAYLOAD_FILE' not found."
exit 1
fi
# Send XML request using curl
curl -k -s -u "${USERNAME}:${PASSWORD}" -H "Content-Type: text/xml" -d @"${XML_PAYLOAD_FILE}" "${CIMC_URL}" | xmllint --format -
Das Bash-Skript definiert die CIMC-Anmeldeparameter und führt außerdem einen XML-API-Aufruf aus, der in einer anderen Datei namensLogin.xml angegeben ist, die durch eine Variable namens XML_PAYLOAD_FILE identifiziert wird.
Das Skript überprüft außerdem, ob die Datei login.xml, die durch die Variable XML_PAYLOAD_FILE definiert ist, vorhanden und eine reguläre Datei ist.
Wenn die von XML_PAYLOAD_FILE definierte Datei nicht vorhanden ist, wird ein Fehler ausgegeben und das Skript beendet.
Speichern Sie die Datei, und führen Sie sie aus, indem Sie den folgenden Befehl in der CLI ausführen:
$ sudo chmod +x main.sh
Schritt 2
Erstellen Sie anschließend die Datei namens dlogin.xml im gleichen Linux-Verzeichnis wie die main.sh-Datei.
Diese Anmeldungsdatei enthält den tatsächlichen API-Aufruf aaaaLoginXML, der an den CIMC gesendet wird, um ein Sitzungscookie abzurufen. Das abgerufene Cookie wird für nachfolgende API-Aufrufe verwendet:
Denken Sie daran, den CIMC-Benutzernamen und das CIMC-Kennwort durch die entsprechenden Anmeldeinformationen zu ersetzen.
Führen Sie das Skript main.sh in der CLI aus, um ein Cookie abzurufen:
$ sudo ./main.sh
Wenn der API-Aufruf erfolgreich ist, enthält die zurückgegebene XML-Antwort einen Schlüssel namens "outCookie", dessen Wert wie dargestellt dem abgerufenen Cookie entspricht:

Suchen Sie in der Ausgabe nach dem outCookie-Wert.
Diesen Cookie-Wert speichern.
Schritt 3
Erstellen Sie eine neue Datei im gleichen Verzeichnis, in dem sich die Datei main.sh befindet. Nennen Sie die Datei get_summary.xml.
Eine umfassende Liste der API-Anforderungen, die mit Cisco IMC verwendet werden können, finden Sie im Cisco UCS Rackmount Servers CIMC XML API Programmer's Guide.
Die neue Datei get_summary.xml wird verwendet, um die Serverzusammenfassungsinformationen und den Host-Leistungsstatus abzurufen. Dabei wird der XML-Codeblock in der Referenzdokumentation verwendet, aber der Cookie-Schlüsselwert wird durch das zuvor abgerufene Cookie ersetzt.
<cookie_value> wird durch den aus der früheren login.xmlresponse erhaltenen theoutCookiewert ersetzt. Die aktualisierte Anforderung sieht wie folgt aus:

Stellen Sie sicher, dass Sie <cookie_value> durch Ihren tatsächlichen Cookie-Wert ersetzen, der während des Authentifizierungsprozesses abgerufen wurde.
Schritt 4
Nachdem das Cookie der neuen Datei get_summary.xml hinzugefügt wurde, aktualisieren Sie das Skript main.sh, um auf "get_summary.xml" als Wert für die XML_PAYLOAD_FILE-Variable für diese Anforderung zu verweisen.
#!/bin/bash
# CONFIGURATION - Edit these variables
CIMC_IP="X.X.X.X"
USERNAME="admin"
PASSWORD="xxxxxxxx"
XML_PAYLOAD_FILE="get_summary.xml" # <<<<<<< Referencing the get_summary.xml file for subsequent API calls.
CIMC_URL="https://${CIMC_IP}/nuova"
# Check if payload file exists
if [ ! -f "$XML_PAYLOAD_FILE" ]; then
echo "Error: XML payload file '$XML_PAYLOAD_FILE' not found."
exit 1
fi
# Send XML request using curl
curl -k -s -u "${USERNAME}:${PASSWORD}" -H "Content-Type: text/xml" -d @"${XML_PAYLOAD_FILE}" "${CIMC_URL}" | xmllint --format -
Führen Sie das Skript main.sh erneut aus, um die aktualisierte API-Anforderung auszuführen.
$ sudo ./main.sh
Sie erhalten dann eine XML-formatierte API-Antwort, die das angeforderte Objekt vom CIMC zurückgibt.

Fehlerbehebung
Es ist wichtig zu beachten, dass der aaaLogin XML API-Aufruf ein Sitzungscookie mit einer outRefreshPeriod von ca. 600 Sekunden zurückgibt. Das bedeutet, dass das Cookie nach zehn (10) Minuten abläuft, wenn es nicht aktualisiert wird, und dass ein neues Cookie erforderlich ist, um weiterhin API-Anfragen ausführen zu können.
Wenn Sie versuchen, ein abgelaufenes Cookie (nach 600 Sekunden) zu verwenden, wird ein 552 "Authorization required" XML-Fehlerantwortblock zurückgegeben:
