Guest Shell چیست؟
فروش یک محصول کاملا بسته از لحاظ نرم افزاری، ایرادی بود که بسیاری از کارشناسان از سیسکو میگرفتند؛ اینکه شما مجبور به پرداخت هزینه محصولی هستید که امکان استفاده از تمام ویژگیهای آن اعم از سخت افزاری یا نرم افزاری را ندارید عامل اصلی این انتقادات بود.
در همین راستا و به منظور پوشش بخشی از این ضعف، قابلیتی به نام Guest Shell در بعضی از محصولات سیسکو ارائه شده است که به کمک آن میتوان از مزیتهای داشتن سیستم عامل Linux موازی با سیستم عامل اصلی محصول خریداری شده استفاده کرد.
Guest shell یک محیط مجازی مبتنی بر لینوکس است که با استفاده از بستری که IOX فراهم میکند امکان نصب نرم افرارهای کاربردی لینوکس را در کنار دسترسی به شبکه فراهم میکند؛ به عنوان مثال نصب نرم افزار tcpdump یا nmap جهت شناسایی و جمع آوری اطلاعات موجود در شبکه.

اما IOx چیست؟ Cisco IOx در واقع یک چهار چوب میزبانی (Platform) در محصولات سیسکو است که امکان برقراری ارتباط با سایر نرم افزار ها و همچنین نصب نرم افزارهای متن باز را میدهد. هدف اصلی IOx تسهیل امور مربوط به IOT است، برای مثال شما با قرار دادن یک مسیریاب میتوانید بدون خریدن دستگاه جانبی (Computing Device) نرم افزار خود را روی مسیریاب نصب کنید و از بستر ارتباطی موجود که مسیریاب در آن فعالیت میکند هم استفاده کنید.
فعال سازی IOx از طریق دستور زیر انجام میگیرد:
CloudXP_CSR1000v#conf t
CloudXP_CSR1000v (config)#iox
CloudXP_CSR1000v (config)#exit
فعال سازی Guest Shell
Guest shell به صورت پیش فرض روی NX-OS نصب است اما برای فعال سازی آن در IOS-XE و IOS، بعد از فعال کردن IOx مراحل زیر را انجام را انجام دهید:
dev4431-1#guestshell enable
Management Interface will be selected if configured
Please wait for completion
به طور پیش فرض در Guest Shell دسترسیای به اینترفیس های روتر ندارید، جهت ایجاد دسترسی guest shell به شبکه میتوانید از این نمونه config استفاده کنید.
CloudXP_CSR1000v #conf t
Enter configuration commands, one per line. End with CNTL/Z
CloudXP_CSR1000v (config)#interface VirtualPortGroup0
CloudXP_CSR1000v (config-if) #ip address 192.168.1.1 255.255.255.0
CloudXP_CSR1000v (config-if) #ip nat inside
CloudXP_CSR1000v (config-if) #exit
CloudXP_CSR1000v (config-if) #interface GigabitEthernet1
CloudXP_CSR1000v (config-if) #ip address 172.66.70.124 255.255.255.0
CloudXP_CSR1000v (config-if) #ip nat outside
CloudXP_CSR1000v (config-if) #exit
CloudXP_CSR1000v (config)#ip access-list standard GUESTSHELL_NAT
CloudXP_CSR1000v (config-std-nacl) #permit 192.168.1.0 0.0.0.255
CloudXP_CSR1000v (config)#ip nat inside source list GUESTSHELL_NAT interface GigabitEthernet1 overload
و از طریق دستور زیر اینترفیس مجازی ایجاد شده را به عنوان اینترفیس مدیریتی Guest Shell معرفی کنید.
(config)#app-hosting appid guestshell
(config)#vnic management guest-interface
برای اجرای دستورات IOS در shell از دستور dohost استفاده کنید.
[guestshell@guestshell ~]$ dohost "show version"
Cisco IOS Software [Everest], Catalyst L3 Switch Software [CAT3K_CAA-UNIVERSALK9-M),
Experimental Version 16.5.2017200014[v165_throttle-BLD-
BLD_V165_THROTTLE_LATEST_20170531_192849 132
در سمت مقابل، برای اجرای command های Guest Shell میتوانید با دستور guestshell run در محیط (IOS,IOS-XE,NX-OS) دستورات مورد نظر خود را اجرا کنید.
مثال: اجرا دستور ping در محیط لینوکس
CloudXP_CSR1000v #guestshell run ping ipcafe.net
PING ipcafe.com (176.9.236.224) 56(84) bytes of data.
64 bytes from www.ipcafe.net (176.9.236.224): icmp_seq=1 ttl=238 time=202 ms
64 bytes from www.ipcafe.net (176.9.236.224): icmp_seq=2 ttl=238 time=232 ms
64 bytes from www.ipcafe.net(176.9.236.224): icmp_seq=3 ttl=238 time=200 ms
64 bytes from www.ipcafe.net(176.9.236.224): icmp_seq=4 ttl=238 time=199 ms
64 bytes from www.ipcafe.net (176.9.236.224): icmp_seq=5 ttl=238 time=200 ms
64 bytes from www.ipcafe.net (176.9.236.224): icmp_seq=6 ttl=238 time=200 ms
و در نهایت اینکه جهت آگاهی از فعال یا غیر فعال بودن Guest Shell بر روی روتر میتوانید از دستور زیر استفاده کنید:
#show app-hosting list
App id State
------------------------------------------------------
guestshell RUNNING
استفاده از Python در Guest Shell
در Guest Shell همانگونه که گفته شد، امکان استفاده از اغلب امکانات یک سیستم عامل لینوکس را دارید. از این طریق میتوان با استفاده از پایتون، اسکریپتهایی جهت اتوماتیک سازی کارها و یا جمع آوری اطلاعات برای بالا بردن سرعت و کارایی شبکه انجام داد.
جهت اطلاع از ورژن و همچنین اجرای برنامههای python در محیط CLI از دستورات زیر استفاده کنید:
Device# guestshell run python
Python 2.7.11 (default, Feb 21 2017, 03:39:40)
[GCC 5.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Device# guestshell run python /flash/sample_script.py loop55
برای استفاده از حافظه Flash روتر در Guest Shell میتوانید از دایرکتوری flash واقع در / استفاده کنید:
[guestshell@guestshell /]$ ls
bin boot bootflash cisco data dev etc fix_sshd.sh flash home lib lib64 local lost+found media mnt opt proc root run sbin selinux srv sys tmp unfix_sshd.sh usr var
[guestshell@guestshell /]$ cd flash/
با مراجعه به این ابزار سیسکو، میتوانید تجهیزات مختلف سیسکو که قابلیت Guest Shell را پشتیبانی میکنند بیابید.