هدف لب
فعالکردن کانتینر لینوکسی Guestshell روی یک روتر، تأیید دردسترسبودن Python درونش، نصب یک پکیج با استفاده از مدیر پکیج خود کانتینر، و اجرای یک اسکریپت Python با استفاده از ماژول cli برای پرسوجوی اطلاعات اینترفیس زنده مستقیماً از درون همان دستگاه.
هدف لب (چرا مهم است)
NETCONF و RESTCONF، پوششدادهشده در لبهای قبلی، اجازه میدهند یک ایستگاه مدیریتی خارجی یک دستگاه را از راه دور اتوماسیون کند. Guestshell بهجای آن مستقیماً روی خود روتر اجرا میشود، و یک کانتینر لینوکسی ایزوله فراهم میکند جایی که اسکریپتهای سفارشی میتوانند محلی اجرا شوند — مفید برای اتوماسیون روی-خود-دستگاه که نیاز دارد بلافاصله به شرایط محلی واکنش نشان دهد بدون وابستگی به اتصال شبکهای به یک کنترلکننده خارجی.
توپولوژی لب
R1 ---- Gi0/0: 192.168.253.1/24، Gi0/1: 10.5.5.1/30
هدف: یک اسکریپت درون خود R1 اجرا کن که این
اینترفیسها را میخواند و گزارش میدهد، بدون
هیچ سیستم خارجی درگیروظیفه ۱: فعالکردن Guestshell
کانتینر Guestshell را روی روتر فعال کن.
وظیفه ۲: دسترسی به Guestshell و تأیید Python
وارد Guestshell شو و تأیید کن Python 3 دردسترس است.
وظیفه ۳: نوشتن یک اسکریپت Python با استفاده از ماژول cli
یک اسکریپت بنویس که از ماژول Python فراهمشده-توسط-IOS به نام cli برای اجرای یک دستور show و تجزیه خروجیاش استفاده میکند.
وظیفه ۴: اجرای اسکریپت و تأیید خروجی
اسکریپت را اجرا کن و تأیید کن بهدرستی اطلاعات اینترفیس کشیدهشده از وضعیت زنده دستگاه را گزارش میدهد.
وظیفه ۵: تأیید اجرای کاملاً روی-خود-دستگاه این
تأیید کن هیچ اتصال شبکه خارجیای برای کارکردن اسکریپت مورد نیاز نبود.
راهحل و تأیید
R1(config)# iox
R1(config)# exit
R1# guestshell enable
-- iox زیرساخت کانتینر زیربنایی را فعال
-- میکند؛ guestshell enable واقعاً خود
-- کانتینر Guestshell را فعال میکندR1# guestshell
[guestshell@guestshell ~]$ python3 --version
Python 3.6.8
-- تأیید میکند یک مفسر کامل Python درون
-- کانتینر دردسترس است، کاملاً جدا از فضای
-- فرآیند IOS خود روتر[guestshell@guestshell ~]$ cat > check_interfaces.py << 'EOF'
from cli import cli
output = cli("show ip interface brief")
print("Interface status from R1 itself:")
print(output)
EOF
-- ماژول cli بهطور خاص توسط محیط Guestshell
-- IOS فراهم میشود، و اجازه میدهد کد Python
-- دستورات IOS را اجرا کند و خروجیشان را
-- مستقیماً بگیرد، بدون SSH یا هر اتصال خارجی
-- به خودش[guestshell@guestshell ~]$ python3 check_interfaces.py
Interface status from R1 itself:
Interface IP-Address OK? Method Status Protocol
GigabitEthernet0/0 192.168.253.1 YES manual up up
GigabitEthernet0/1 10.5.5.1 YES manual up up
-- اسکریپت با موفقیت وضعیت اینترفیس زنده را با
-- فراخوانی مستقیم به موتور CLI خود IOS از
-- درون کانتینر بازیابی کرد-- قطعکردن کاملاً کابلهای شبکه روتر و اجرای
-- مجدد اسکریپت از درون یک جلسه Guestshell موجود:
[guestshell@guestshell ~]$ python3 check_interfaces.py
Interface status from R1 itself:
Interface IP-Address OK? Method Status Protocol
GigabitEthernet0/0 192.168.253.1 YES manual administratively down down
GigabitEthernet0/1 10.5.5.1 YES manual administratively down down
-- اسکریپت همچنان اجرا میشود و بهدرستی
-- گزارش میدهد (اکنون اینترفیسها را down
-- نشان میدهد، چون فیزیکاً قطعاند) -- تأیید
-- میکند کل عملیات روی-خود-دستگاه رخ میدهد و
-- هرگز به هیچ مسیر شبکه خارجیای وابسته نبودنکته کلیدی
ماژول Python در cli در Guestshell مستقیماً به موتور اجرای دستور خود روتر از درون یک کانتینر لینوکسی ایزوله در حال اجرا روی همان دستگاه فیزیکی پل میزند — این اساساً متفاوت از اتوماسیون NETCONF یا RESTCONF پوششدادهشده در لبهای قبلی است، که نیازمند یک مسیر شبکه مدیریتی کارآمد به یک ایستگاه خارجی هستند، که Guestshell را به انتخاب درست بهطور خاص برای اتوماسیون محلی و خودمحتوا که باید حتی در طول مسائل اتصال شبکه گستردهتر عملکردی بماند تبدیل میکند.