خودکار کردن ورود در SecureCRT با استفاده از اسکریپت

مهندسان شبکه اغلب با وظیفه کپی/پیست کردن قطعات خاصی از دفترچه یادداشت به کنسول روبرو هستند. معمولاً باید چندین پارامتر را کپی کنید: نام کاربری / رمز عبور و چیز دیگری. استفاده از اسکریپت ها به شما این امکان را می دهد که این روند را تسریع کنید. اما وظایف نوشتن اسکریپت و اجرای اسکریپت باید در کل زمان کمتری نسبت به پیکربندی دستی ببرد، در غیر این صورت اسکریپت ها بی فایده هستند.

این مقاله برای چیست؟ این مقاله از سری Fast Start است و هدف آن صرفه جویی در زمان مهندسان شبکه هنگام راه اندازی تجهیزات (تک کار) در چندین دستگاه است. از نرم افزار SecureCRT و عملکرد داخلی اجرای اسکریپت استفاده می کند.

مقدار

معرفی

برنامه SecureCRT دارای یک مکانیسم داخلی برای اجرای اسکریپت خارج از جعبه است. اسکریپت های ترمینال برای چیست؟

  • I/O خودکار و حداقل اعتبار I/O.
  • تسریع در اجرای وظایف معمول - کاهش مکث بین تنظیمات تجهیزات. (کاهش عملاً مکث های ناشی از زمان برای انجام اقدامات کپی/گذشته روی همان سخت افزار، با 3 یا چند قطعه فرمان که باید روی سخت افزار اعمال شود.)

این سند وظایف:

  • ایجاد اسکریپت های ساده
  • اجرای اسکریپت ها در SecureCRT.
  • نمونه هایی از استفاده از اسکریپت های ساده و پیشرفته. (از زندگی واقعی تمرین کنید.)

ایجاد اسکریپت های ساده

ساده ترین اسکریپت ها فقط از دو دستور Send و WaitForString استفاده می کنند. این قابلیت برای 90٪ (یا بیشتر) کارهای انجام شده کافی است.

اسکریپت ها می توانند در Python، JS، VBS (Visual Basic)، Perl و غیره کار کنند.

پــایتــون

# $language = "Python"
# $interface = "1.0"
def main():
  crt.Screen.Synchronous = True
  crt.Screen.Send("r")
  crt.Screen.WaitForString("name")
  crt.Screen.Send("adminr")
  crt.Screen.WaitForString("Password:")
  crt.Screen.Send("Password")
  crt.Screen.Synchronous = False
main()

معمولاً یک فایل با پسوند "*.py"

VBS

# $language = "VBScript"
# $interface = "1.0"
Sub Main
  crt.Screen.Synchronous = True
  crt.Screen.Send vbcr
  crt.Screen.WaitForString "name"
  crt.Screen.Send "cisco" & vbcr
  crt.Screen.WaitForString "assword"
  crt.Screen.Send "cisco" & vbcr
  crt.Screen.Synchronous = False
End Sub

معمولاً یک فایل با پسوند "*.vbs"

با استفاده از ورودی اسکریپت یک اسکریپت ایجاد کنید.

به شما امکان می دهد فرآیند نوشتن یک اسکریپت را خودکار کنید. شما شروع به نوشتن یک فیلمنامه می کنید. SecureCRT دستورات و پاسخ سخت افزاری بعدی را ضبط می کند و اسکریپت تمام شده را برای شما نمایش می دهد.

آ. شروع به نوشتن اسکریپت کنید:
منوی SecureCRT => Script => Start Recording Script
ب اقدامات را با کنسول انجام دهید (مراحل پیکربندی را در CLI انجام دهید).
V. نوشتن فیلمنامه را تمام کنید:
منوی SecureCRT => اسکریپت => توقف اسکریپت ضبط…
فایل اسکریپت را ذخیره کنید.

نمونه ای از دستورات اجرا شده و اسکریپت ذخیره شده:

خودکار کردن ورود در SecureCRT با استفاده از اسکریپت

اجرای اسکریپت ها در SecureCRT.

پس از ایجاد/ویرایش اسکریپت، یک سوال طبیعی مطرح می شود: چگونه اسکریپت را اعمال کنیم؟
چندین روش وجود دارد:

  • اجرای دستی از منوی Script
  • شروع خودکار پس از اتصال (اسکریپت ورود)
  • ورود خودکار بدون استفاده از اسکریپت
  • راه اندازی دستی با یک دکمه در SecureCRT (دکمه ای هنوز ایجاد و به SecureCRT اضافه نشده است)

اجرای دستی از منوی Script

منوی SecureCRT => اسکریپت => اجرا…
- 10 اسکریپت آخر به خاطر سپرده شده و برای راه اندازی سریع در دسترس هستند:
منوی SecureCRT => اسکریپت => 1 "نام فایل اسکریپت"
منوی SecureCRT => اسکریپت => 2 "نام فایل اسکریپت"
منوی SecureCRT => اسکریپت => 3 "نام فایل اسکریپت"
منوی SecureCRT => اسکریپت => 4 "نام فایل اسکریپت"
منوی SecureCRT => اسکریپت => 5 "نام فایل اسکریپت"

شروع خودکار پس از اتصال (اسکریپت ورود)

تنظیمات اسکریپت ثبت خودکار برای جلسه ذخیره شده پیکربندی شده است: Connection => Logon Actions => Logon script

خودکار کردن ورود در SecureCRT با استفاده از اسکریپت

ورود خودکار بدون استفاده از اسکریپت

تنها با استفاده از عملکرد داخلی SecureCRT، می توان به طور خودکار نام کاربری رمز عبور را بدون نوشتن اسکریپت وارد کرد. در تنظیمات اتصال "اتصال" => اقدامات ورود => ورود خودکار - باید چندین بسته را پر کنید - که به معنای جفت ها است: "متن مورد انتظار" + "کاراکترهای ارسال شده به این متن" می تواند بسیاری از این جفت ها وجود داشته باشد. (مثال: جفت اول در انتظار نام کاربری، دوم در انتظار رمز عبور، سوم در انتظار اعلان حالت ممتاز، جفت چهارم برای رمز عبور حالت ممتاز.)

نمونه ای از ورود خودکار در Cisco ASA:

خودکار کردن ورود در SecureCRT با استفاده از اسکریپت

راه اندازی دستی با یک دکمه در SecureCRT (دکمه ای هنوز ایجاد و به SecureCRT اضافه نشده است)

در SecureCRT می توانید یک اسکریپت را به یک دکمه اختصاص دهید. دکمه به پانلی که مخصوص این منظور ایجاد شده است اضافه می شود.

آ. افزودن یک پنل به رابط: SecureCRT Menu => View => Button Bar
ب یک دکمه به پنل اضافه کنید و یک اسکریپت اضافه کنید. - بر روی نوار دکمه راست کلیک کرده و "دکمه جدید..." را از منوی زمینه انتخاب کنید.
V. در کادر محاوره‌ای «دکمه نقشه»، در قسمت «عمل»، عمل (عملکرد) «اجرای اسکریپت» را انتخاب کنید.
یک عنوان برای دکمه مشخص کنید. رنگ نماد دکمه تنظیمات را با کلیک بر روی Ok به پایان برسانید.

خودکار کردن ورود در SecureCRT با استفاده از اسکریپت

توجه:

پانل با دکمه ها عملکرد بسیار مفیدی است.

1. ممکن است، هنگام ورود به یک جلسه خاص، مشخص کنید که کدام پنل به صورت پیش فرض در این تب باز شود.

2. امکان تنظیم اقدامات از پیش تعریف شده برای اقدامات استاندارد با تجهیزات وجود دارد: نمایش نسخه نمایش، نمایش در حال اجرا-پیکربندی، ذخیره پیکربندی.

خودکار کردن ورود در SecureCRT با استفاده از اسکریپت
هیچ اسکریپتی به این دکمه ها متصل نیست. فقط خط اقدام:

خودکار کردن ورود در SecureCRT با استفاده از اسکریپت
تنظیمات - به طوری که هنگام جابجایی به یک جلسه، پانل لازم با دکمه ها در تنظیمات جلسه باز می شود:

خودکار کردن ورود در SecureCRT با استفاده از اسکریپت
منطقی است که مشتری اسکریپت های جداگانه ای را برای ورود تنظیم کند و با دستورات مکرر برای فروشنده به پنل برود.

خودکار کردن ورود در SecureCRT با استفاده از اسکریپت
هنگامی که دکمه Go Cisco را فشار می دهید، پانل به نوار دکمه سیسکو تغییر می کند.

خودکار کردن ورود در SecureCRT با استفاده از اسکریپت

نمونه هایی از استفاده از اسکریپت های ساده و پیشرفته. (از زندگی واقعی تمرین کنید.)

اسکریپت های ساده تقریبا برای همه موارد کافی است. اما یک بار نیاز داشتم که فیلمنامه را کمی پیچیده کنم - برای سرعت بخشیدن به کار. این عارضه فقط داده های اضافی را در یک کادر محاوره ای از کاربر درخواست کرد.

درخواست داده از کاربر با استفاده از کادر محاوره ای

من در اسکریپت درخواست داده 2 داشتم. این نام میزبان و اکتت چهارم آدرس IP است. برای انجام این عمل - نحوه انجام آن را در گوگل جستجو کردم و آن را در وب سایت رسمی SecureCRT (vandyke) پیدا کردم. - عملکرد سریع نامیده می شود.

	crt.Screen.WaitForString("-Vlanif200]")
	hostnamestr = crt.Dialog.Prompt("Enter hostname:", "hostname", "", False)
	ipaddressstr = crt.Dialog.Prompt("Enter ip address:", "ip", "", False)
	crt.Screen.Send("ip address 10.10.10.")
	crt.Screen.Send(ipaddressstr)
	crt.Screen.Send(" 23r")
	crt.Screen.Send("quitr")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("r") 

این قسمت از اسکریپت نام میزبان و اعداد از آخرین اکتت را می‌خواست. از آنجایی که 15 قطعه تجهیزات وجود داشت. و داده ها در یک جدول ارائه شد، سپس من مقادیر را از جدول کپی کردم و آن را در کادرهای محاوره ای قرار دادم. علاوه بر این فیلمنامه به طور مستقل کار کرد.

کپی FTP به تجهیزات شبکه

این اسکریپت پنجره فرمان من (پوسته) را راه اندازی کرد و داده ها را از طریق FTP کپی کرد. در پایان جلسه را ببندید. استفاده از دفترچه یادداشت برای این کار غیرممکن است، زیرا کپی کردن زمان بسیار زیادی طول می کشد و داده های موجود در بافر FTP برای مدت طولانی ذخیره نمی شوند:

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("ftp 192.168.1.1r")
	crt.Screen.WaitForString("Name")
	crt.Screen.Send("adminr")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Passwordr")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("binaryr")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("put S5720LI-V200R011SPH016.patr")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("quitr")
	crt.Screen.Synchronous = False
main()

وارد کردن نام کاربری/رمز عبور با استفاده از اسکریپت

دسترسی مشتری به تجهیزات شبکه به طور مستقیم بسته شد. ورود به تجهیزات ابتدا با اتصال به Default Gateway و از آن سپس به تجهیزات متصل به آن امکان پذیر بود. برای اتصال از کلاینت ssh ساخته شده در نرم افزار IOS/سخت افزار استفاده شد. بر این اساس نام کاربری و رمز عبور در کنسول درخواست شد. با اسکریپت زیر، نام کاربری و رمز عبور به صورت خودکار وارد شد:

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("snmpadminr")
	crt.Screen.WaitForString("assword:")
	crt.Screen.Send("Passwordr")
	crt.Screen.Synchronous = False
main()

توجه: 2 اسکریپت وجود داشت یکی برای حساب مدیر، دومی برای حساب eSIGHT.

اسکریپتی با قابلیت افزودن مستقیم داده ها در حین اجرای اسکریپت.

وظیفه اضافه کردن یک مسیر ثابت در تمام تجهیزات شبکه بود. اما دروازه اینترنت در هر تجهیزات متفاوت بود (و با دروازه پیش فرض تفاوت داشت). اسکریپت زیر جدول مسیریابی را نمایش می دهد، وارد حالت پیکربندی می شود، دستور را تا انتها نمی نویسد (آدرس IP دروازه به اینترنت) - من این قسمت را اضافه کردم. بعد از اینکه Enter را فشار دادم، اسکریپت به اجرای دستور ادامه داد.

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("Zdes-mogla-bit-vasha-reklamar")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("show run | inc ip router")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("conf tr")
	crt.Screen.WaitForString("(config)#")
	crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ")
	crt.Screen.WaitForString("(config)#")
	crt.Screen.Send("endr")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("copy run star")
	crt.Screen.WaitForString("[startup-config]?")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("exitr")
	crt.Screen.Synchronous = False
main()

در این اسکریپت، در خط: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") آدرس IP دروازه اضافه نشده است و هیچ کاراکتر بازگشتی وجود ندارد. اسکریپت منتظر خط بعدی با کاراکترهای "(config) #" است این کاراکترها بعد از وارد کردن آدرس IP و وارد کردن من ظاهر شدند.

نتیجه گیری:

هنگام نوشتن یک اسکریپت و اجرای آن، این قانون باید رعایت شود: زمان نوشتن یک اسکریپت و اجرای یک اسکریپت هرگز نباید بیشتر از زمانی باشد که از نظر تئوری برای انجام همان کار به صورت دستی صرف می شود (کپی / چسباندن از دفترچه یادداشت، نوشتن و اشکال زدایی). کتاب بازی برای ansible، نوشتن و اشکال زدایی اسکریپت پایتون). یعنی استفاده از اسکریپت باید در زمان صرفه جویی کند و زمان را برای اتوماسیون یکباره فرآیندها هدر ندهد (یعنی زمانی که اسکریپت منحصر به فرد است و دیگر تکرار نخواهد شد). اما اگر اسکریپت منحصربه‌فرد است و اتوماسیون با اسکریپت و نوشتن/اشکال‌زدایی اسکریپت زمان کمتری نسبت به انجام آن به روش دیگر (ansible، پنجره فرمان) می‌برد، آن‌گاه اسکریپت بهترین راه‌حل است.
اشکال زدایی یک اسکریپت اسکریپت به تدریج رشد می‌کند، اشکال‌زدایی در مرحله اجرا در دستگاه اول، دوم، سوم انجام می‌شود و در چهارمین دستگاه به احتمال زیاد اسکریپت کاملاً عملیاتی می‌شود.

اجرای یک اسکریپت (با وارد کردن نام کاربری + رمز عبور) با ماوس معمولا سریعتر از کپی کردن نام کاربری و رمز عبور از یک دفترچه یادداشت است. اما از نظر امنیتی ایمن نیست.
مثال (واقعی) دیگر هنگام استفاده از یک اسکریپت: دسترسی مستقیم به تجهیزات شبکه ندارید. اما نیاز به پیکربندی تمام تجهیزات شبکه وجود دارد (آن را به سیستم مانیتورینگ بیاورید، نام کاربری/رمز عبور/snmpv3username/رمز عبور اضافی را پیکربندی کنید). وقتی به سوئیچ Core می روید دسترسی وجود دارد، از آن SSH را به تجهیزات دیگر باز می کنید. چرا نمی توانید از Ansible استفاده کنید. - از آنجا که ما با محدودیتی در تعداد جلسات مجاز همزمان در تجهیزات شبکه مواجه می شویم (خط vty 0 4، رابط کاربری vty 0 4) (سوال دیگر این است که چگونه تجهیزات مختلف را در Ansible با همان SSH first hop راه اندازی کنیم).

اسکریپت زمان را در طول عملیات طولانی کاهش می دهد - به عنوان مثال، کپی کردن فایل ها از طریق FTP. پس از اتمام کپی، اسکریپت بلافاصله شروع به کار می کند. شخص باید پایان کپی را ببیند، سپس پایان کپی را متوجه شود، سپس دستورات مربوطه را وارد کند. فیلمنامه این کار را به طور عینی سریعتر انجام می دهد.

اسکریپت ها در جایی قابل اجرا هستند که استفاده از ابزارهای تحویل انبوه داده غیرممکن باشد: کنسول. یا زمانی که برخی از داده های تجهیزات منحصر به فرد هستند: نام میزبان، آدرس IP مدیریت. یا هنگام نوشتن یک برنامه و اشکال زدایی، دشوارتر از افزودن داده های دریافتی از تجهیزات در حین اجرای اسکریپت است. - یک مثال با یک اسکریپت برای تجویز یک مسیر، زمانی که هر تجهیزات آدرس IP خود ارائه دهنده اینترنت را دارد. (همکاران من چنین اسکریپت هایی را نوشتند - زمانی که صدای DMVPN بیش از 3 بود. لازم بود تنظیمات DMVPN را تغییر دهید).

مطالعه موردی: پیکربندی تنظیمات اولیه در یک سوئیچ جدید با استفاده از پورت‌های کنسول:

الف. کابل کنسول را به دستگاه وصل کنید.
ب. اسکریپت را اجرا کنید
ب- منتظر اجرای فیلمنامه بود
D. کابل کنسول را به دستگاه بعدی وصل کنید.
E. اگر سوئیچ آخرین مورد نیست، به مرحله B بروید.

در نتیجه کار فیلمنامه:

  • رمز اولیه روی تجهیزات تنظیم شده است.
  • نام کاربری وارد شد
  • آدرس IP منحصر به فرد دستگاه وارد می شود.

PS عملیات باید تکرار می شد. زیرا ssh پیش فرض پیکربندی/غیرفعال نشده بود. (بله، این اشتباه من است.)

منابع مورد استفاده

1. درباره ایجاد اسکریپت
2. نمونه های اسکریپت

پیوست 1: نمونه اسکریپت ها.


نمونه ای از یک اسکریپت طولانی، با دو پرس و جو: نام میزبان و آدرس IP. برای تنظیم تجهیزات از طریق کنسول (9600 baud) ایجاد شده است. و همچنین برای آماده سازی اتصال تجهیزات به شبکه.

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("r")
	crt.Screen.WaitForString("name")
	crt.Screen.Send("adminr")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Passwordr")
	crt.Screen.Send("sysr")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface Vlanif 1r")
	crt.Screen.WaitForString("Vlanif1]")
	crt.Screen.Send("undo ip addressr")
	crt.Screen.Send("shutdownr")
	crt.Screen.Send("vlan 100r")
	crt.Screen.Send(" description description1r")
	crt.Screen.Send(" name description1r")
	crt.Screen.Send("vlan 110r")
	crt.Screen.Send(" description description2r")
	crt.Screen.Send(" name description2r")
	crt.Screen.Send("vlan 120r")
	crt.Screen.Send(" description description3r")
	crt.Screen.Send(" name description3r")
	crt.Screen.Send("vlan 130r")
	crt.Screen.Send(" description description4r")
	crt.Screen.Send(" name description4r")
	crt.Screen.Send("vlan 140r")
	crt.Screen.Send(" description description5r")
	crt.Screen.Send(" name description5r")
	crt.Screen.Send("vlan 150r")
	crt.Screen.Send(" description description6r")
	crt.Screen.Send(" name description6r")
	crt.Screen.Send("vlan 160r")
	crt.Screen.Send(" description description7r")
	crt.Screen.Send(" name description7r")
	crt.Screen.Send("vlan 170r")
	crt.Screen.Send(" description description8r")
	crt.Screen.Send(" name description8r")               
	crt.Screen.Send("vlan 180r")
	crt.Screen.Send(" description description9r")
	crt.Screen.Send(" name description9r")
	crt.Screen.Send("vlan 200r")
	crt.Screen.Send(" description description10r")
	crt.Screen.Send(" name description10r")
	crt.Screen.Send("vlan 300r")
	crt.Screen.Send(" description description11r")
	crt.Screen.Send(" name description11r")
	crt.Screen.Send("quitr")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("stp region-configurationr")
	crt.Screen.Send("region-name descr")
	crt.Screen.Send("active region-configurationr")
	crt.Screen.WaitForString("mst-region]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("stp instance 0 priority 57344r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface range GigabitEthernet 0/0/1 to GigabitEthernet 0/0/42r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Usersr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type hybridr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan 100 enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan legacy enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid pvid vlan 120r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid tagged vlan 100r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid untagged vlan 120r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021pr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("interface range GigabitEthernet 0/0/43 to GigabitEthernet 0/0/48r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Printersr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type accessr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port default vlan 130r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021pr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("interface range XGigabitEthernet 0/0/1 to XGigabitEthernet 0/0/2r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description uplinkr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type trunkr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 100 110 120 130 140 150 160 170 180 200r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 300r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.4r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.2r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.134r")
	crt.Screen.Send("ip route-static 0.0.0.0 0.0.0.0 10.10.10.254r")
	crt.Screen.Send("interface Vlanif 200r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
        hostnamestr = crt.Dialog.Prompt("Enter hostname:", "hostname", "", False)
        ipaddressstr = crt.Dialog.Prompt("Enter ip address:", "ip", "", False)
	crt.Screen.Send("ip address 10.10.10.")
	crt.Screen.Send(ipaddressstr)
	crt.Screen.Send(" 24r")
	crt.Screen.Send("quitr")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("r")
	crt.Screen.WaitForString("]")
	crt.Screen.Synchronous = False
main()

چنین اسکریپت هایی معمولاً مورد نیاز نیستند، اما مقدار تجهیزات 15 عدد است. راه اندازی سریعتر مجاز است. راه اندازی تجهیزات با استفاده از پنجره فرمان SecureCRT سریعتر بود.

راه اندازی یک حساب کاربری برای ssh.

مثالی دیگر. پیکربندی نیز از طریق کنسول است.

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("r")
	crt.Screen.WaitForString("name")
	crt.Screen.Send("adminr")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Passwordr")
	crt.Screen.WaitForString(">")
	crt.Screen.Send("sysr")
	crt.Screen.Send("stelnet server enabler")
	crt.Screen.Send("aaar")
	crt.Screen.Send("local-user admin service-type terminal ftp http sshr")
	crt.Screen.Send("quitr")
	crt.Screen.Send("user-interface vty 0 4r")
	crt.Screen.Send("authentication-mode aaar")
	crt.Screen.Send("quitr")
	crt.Screen.Send("quitr")
	crt.Screen.Synchronous = False
main()


درباره SecureCRT:نرم افزار پولی: از 99 دلار (کمترین قیمت فقط برای SecureCRT برای یک سال است)
وب سایت رسمی
یک مجوز نرم افزار یک بار با پشتیبانی (برای به روز رسانی) خریداری می شود، سپس نرم افزار با این مجوز برای مدت نامحدود استفاده می شود.

روی سیستم عامل Mac OS X و ویندوز کار می کند.

پشتیبانی از اسکریپت وجود دارد (این مقاله)
وجود دارد پنجره فرمان
سیستم عامل سریال/Telnet/SSH1/SSH2/Shell

منبع: www.habr.com