لب عملی: پیکربندی Guestshell برای اسکریپت‌نویسی Python روی خود دستگاه

این لب عملی کانتینر Guestshell را روی یک روتر فعال می‌کند، یک پکیج Python درونش نصب می‌کند، و یک اسکریپت ساده که داده اینترفیس زنده را از CLI IOS می‌خواند اجرا می‌کند، و برنامه‌نویسی روی-خود-دستگاه متمایز از اتوماسیون خارجی NETCONF/RESTCONF پوشش‌داده‌شده در لب‌های قبلی را نشان می‌دهد.

کانتینر Guestshellاسکریپت‌نویسی Python روی-خود-دستگاهماژول Python در cli

~3 min read · Updated Sep 26, 2026

هدف لب

فعال‌کردن کانتینر لینوکسی 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 را به انتخاب درست به‌طور خاص برای اتوماسیون محلی و خودمحتوا که باید حتی در طول مسائل اتصال شبکه گسترده‌تر عملکردی بماند تبدیل می‌کند.

Written & researched by Dr. Shahin Siami

Related Articles

لب عملی: چالش عیب‌یابی جامع نهایی CCNP (یکپارچگی BGP، DMVPN، و QoS)

این لب عملی یک شکست پیچیده چندلایه در سراسر یک توپولوژی یکپارچه BGP-روی-DMVPN ترکیب‌شده با علامت‌گذاری QoS ارائه می‌دهد، و نیازمند تشخیص سیستماتیک یک پیکربندی نادرست route reflector، یک شکست ثبت NHRP، و یک سیاست QoS نادرست‌اعمال‌شده که هم‌زمان روی همان شبکه تأثیر می‌گذارند است.

Continue

لب عملی: پیکربندی BGP روی DMVPN

این لب عملی iBGP را به‌عنوان پروتکل مسیریابی در سراسر همان توپولوژی hub-and-spoke DMVPN استفاده‌شده در دو لب قبلی اجرا می‌کند، hub را به‌عنوان یک route reflector BGP پیکربندی می‌کند طوری‌که spoke ها مسیرهای یکدیگر را بدون یک mesh کامل iBGP یاد بگیرند، و دو مفهوم قبلاً جداگانه را در یک طراحی یکپارچه ترکیب می‌کند.

Continue

لب عملی: پیکربندی OSPF روی DMVPN

این لب عملی OSPF را به‌عنوان پروتکل مسیریابی پویا در سراسر همان توپولوژی hub-and-spoke DMVPN اجرا می‌کند، و اینترفیس تونل را به‌عنوان یک نوع شبکه OSPF point-to-multipoint پیکربندی می‌کند تا الگوی همسایگی hub-and-spoke را به‌درستی بدون نیاز به انتخاب DR/BDR نوع شبکه broadcast مدیریت کند.

Continue

لب عملی: پیکربندی EIGRP روی DMVPN

این لب عملی EIGRP را به‌عنوان پروتکل مسیریابی پویا در سراسر توپولوژی hub-and-spoke DMVPN ساخته‌شده در لب‌های قبلی اجرا می‌کند، و تأیید می‌کند روابط همسایه به‌درستی در سراسر تونل چندنقطه‌ای شکل می‌گیرند و مسیرها بدون نیاز به پیکربندی ایستای هر-spoke روی hub منتشر می‌شوند.

Continue

لب عملی: پیکربندی احراز هویت MD5 در HSRP

این لب عملی احراز هویت MD5 را روی یک گروه HSRP پیکربندی می‌کند، و تأیید می‌کند دو روتر با رشته‌های احراز هویت منطبق یک رابطه active/standby معمولی تشکیل می‌دهند در حالی که یک روتر با رشته نامنطبق کاملاً از گروه مستثنی می‌شود.

Continue

لب عملی: پیکربندی امنیت DNS به‌سبک-Cisco Umbrella از طریق تغییرمسیر Forwarding DNS

این لب عملی یک روتر را برای رهگیری هر پرس‌وجوی DNS کلاینت و تغییرمسیر آن به‌سمت یک resolver DNS امنیت-محور با استفاده از رهگیری forwarding DNS پیکربندی می‌کند، و اعمال امنیت DNS تحویل‌شده-با-ابر را بدون نیاز به تغییرات پیکربندی به‌ازای-هر-کلاینت تقریب می‌زند.

Continue