المقدمة
يوضح هذا المستند كيفية إجراء مكالمات XML API اليدوية إلى وحدة التحكم في الإدارة المتكاملة (CIMC) من Cisco.
المكونات المستخدمة
- جهاز لينوكس (أي توزيع).
- اتصال الشبكة بين جهاز Linux و Cisco CIMC (إختبار الاتصال الناجح كاف).
ملاحظة: أسماء الملفات (main.sh، login.xml، get_summary.xml) المستخدمة في هذا الدليل تعسفية. أنت حر في إستخدام اصطلاحات التسمية الخاصة بك، طالما أنها مشار إليها بشكل صحيح طوال العملية.
تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.
معلومات أساسية
في هذا العرض، يتم إستخدام نص نصي من Bash باسم main.sh" لتنفيذ إستدعاءات API إلى الخادم.
يرجى ملاحظة أن الأساليب البديلة، مثل CURL(مباشرة من CLI) أو Python، يمكن أن تحقق أيضا نفس النتيجة.
إجراء إستدعاءات واجهة برمجة تطبيقات XML إلى CIMC
تتطلب واجهة برمجة تطبيقات CIMC XML خطوة مصادقة أولية باستخدام إستدعاء واجهة برمجة تطبيقات aaaLogin". أثناء هذه العملية، يتم إسترداد ملف تعريف إرتباط جلسة العمل، والذي يتم إستخدامه بعد ذلك لمصادقة كافة مكالمات API التالية.
الخطوة 1
ابدأ بإنشاء ملف باسم main.sh في جهاز Linux البعيد. يحتوي هذا الملف على برنامج نصي بسيط يستخدم لإرسال مكالمات API.
يتم تنفيذ النص main.sh عدة مرات خلال هذا التمرين: أولا للمصادقة ثم لاسترداد المعلومات من وحدة التحكم في إدارة اللوحة الأساسية (CIMC) في المكالمات التالية.
هنا محتوى الملف 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 -
يحدد البرنامج النصي الأساسي معلمات تسجيل الدخول إلى CIMC ويقوم أيضا بتنفيذ إستدعاء XML API، المحدد في ملف آخر يسمىlogin.xml المحدد بواسطة متغير يسمى XML_PAYLOAD_FILE.
يتحقق البرنامج النصي أيضا مما إذا كان الملف login.xml، المعرف بالمتغير xml_PAYLOAD_FILE موجودا أم لا وهو ملف عادي.
إذا كان الملف المعرف من قبل XML_PAYLOAD_FILE غير موجود، فإن البرنامج النصي يطبع خطأ ويخرج.
قم بحفظ الملف وجعله قابلا للتنفيذ عن طريق تشغيل هذا الأمر في CLI:
$ sudo chmod +x main.sh
الخطوة 2
بعد ذلك، قم بإنشاء الملف callLogin.xml في نفس دليل linux مثل الملف main.sh.
يحتوي ملف تسجيل الدخول هذا على إستدعاء ActuaaaLoginXML API الذي يتم إرساله إلى CIMC لاسترداد ملف تعريف إرتباط جلسة العمل. يتم إستخدام ملف تعريف الارتباط الذي تم إسترداده لاستدعاءات API التالية:
تذكر إستبدال اسم مستخدم وكلمة مرور CIMC ببيانات الاعتماد المناسبة.
قم بتنفيذ البرنامج النصي main.sh في واجهة سطر الأوامر (CLI) لاسترداد ملف تعريف إرتباط:
$ sudo ./main.sh
إذا نجح إستدعاء API، تحتوي إستجابة XML التي تم إرجاعها على مفتاح إستدعاءCookiewith مع قيمة ملف تعريف الارتباط الذي تم إسترداده كما هو موضح:

من الإخراج، حدد موقع قيمة outCookie.
حفظ قيمة ملف تعريف الارتباط هذه.
الخطوة 3
قم بإنشاء ملف جديد في نفس الدليل حيث يوجد ملف main.sh. قم بتسمية الملف get_summary.xml.
للحصول على قائمة شاملة لطلبات واجهة برمجة التطبيقات (API) التي يمكن إستخدامها مع Cisco IMC، ارجع إلى دليل مبرمج CIMC XML API الخاص بالخوادم المركبة على حامل من Cisco UCS.
يتم إستخدام الملف الجديد get_summary.xml لاسترداد معلومات ملخص الخادم وحالة طاقة المضيف. باستخدام كتلة XML من التعليمات البرمجية في الوثائق المرجعية، ولكن مع إستبدال قيمة مفتاح cookie مع ملف تعريف الارتباط للاسترداد السابق.
استبدلت <cookie_value> مع theoutCookievalue الذي تم الحصول عليه من login السابق.xmlresponse. يبدو الطلب المحدث كما يلي:

تأكد من إستبدال <cookie_value> بقيمة ملف تعريف الارتباط الفعلية التي تم إستردادها أثناء عملية المصادقة.
الخطوة 4
بمجرد إضافة ملف تعريف الارتباط إلى ملف get_summary.xml الجديد، قم بتحديث البرنامج النصي main.sh للإشارة إلى متغير get_summary.xml كقيمة ل XML_PAYLOAD_FILE لهذا الطلب.
#!/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 -
قم بتشغيل البرنامج النصي main.sh مرة أخرى لتنفيذ طلب واجهة برمجة التطبيقات المحدث.
$ sudo ./main.sh
ثم تتلقى إستجابة واجهة برمجة تطبيقات منسقة بتنسيق XML تعيد الكائن المطلوب من CIMC.

استكشاف الأخطاء وإصلاحها
من المهم ملاحظة أن إستدعاء AAAlogin XML API يرجع ملف تعريف إرتباط جلسة العمل مع outRefreshPeriod لمدة 600 ثانية تقريبا. وهذا يعني أن ملف تعريف الارتباط ينتهي صلاحيته بعد مرور 10 (10) دقائق إذا لم يتم تحديثه، وأن ملف تعريف الارتباط الجديد مطلوب لمتابعة تنفيذ طلبات API.
إذا حاولت إستخدام ملف تعريف إرتباط منتهي الصلاحية (بعد 600 ثانية)، يتم إرجاع كتلة إستجابة خطأ XML ل 552 تفويض مطلوب":
