أتمتة الإدخال في SecureCRT باستخدام البرامج النصية

غالبًا ما يواجه مهندسو الشبكات مهمة نسخ / لصق أجزاء معينة من المفكرة إلى وحدة التحكم. عادة ما يتعين عليك نسخ العديد من المعلمات: اسم المستخدم / كلمة المرور وشيء آخر. يتيح لك استخدام البرامج النصية تسريع هذه العملية. لكن مهام كتابة البرنامج النصي وتنفيذ البرنامج النصي يجب أن تستغرق وقتًا أقل إجمالاً من التكوين اليدوي ، وإلا فإن النصوص البرمجية غير مجدية.

ما هو هذا المقال ل؟ هذه المقالة مأخوذة من سلسلة Fast Start وتهدف إلى توفير وقت مهندسي الشبكات عند إعداد المعدات (مهمة واحدة) على أجهزة متعددة. يستخدم برنامج SecureCRT ووظيفة تنفيذ البرنامج النصي المضمنة.

محتوى

مقدمة

يحتوي برنامج SecureCRT على آلية تنفيذ نصية مضمنة خارج الصندوق. ما هي البرامج النصية الطرفية ل؟

  • الإدخال / الإخراج الآلي ، والحد الأدنى من التحقق من صحة الإدخال / الإخراج.
  • تسريع تنفيذ المهام الروتينية - تقليل فترات التوقف المؤقت بين إعدادات الجهاز. (تقليل فعلي للإيقاف المؤقت الناتج عن الوقت لتنفيذ إجراءات النسخ / الماضي على نفس الجهاز ، مع تطبيق 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 => البرنامج النصي => بدء تسجيل البرنامج النصي
ب. نفذ الإجراءات مع وحدة التحكم (نفذ خطوات التكوين في CLI).
الخامس. الانتهاء من كتابة السيناريو:
قائمة SecureCRT => البرنامج النصي => إيقاف تسجيل البرنامج النصي ...
احفظ ملف البرنامج النصي.

مثال على الأوامر المنفذة والنصوص المحفوظة:

أتمتة الإدخال في SecureCRT باستخدام البرامج النصية

تشغيل البرامج النصية على SecureCRT.

بعد إنشاء / تحرير البرنامج النصي ، يظهر سؤال طبيعي: كيف يتم تطبيق البرنامج النصي؟
هناك عدة طرق:

  • يعمل يدويًا من قائمة البرنامج النصي
  • البدء التلقائي بعد الاتصال (برنامج نصي لتسجيل الدخول)
  • تسجيل دخول تلقائي بدون استخدام برنامج نصي
  • التشغيل يدويًا باستخدام زر في SecureCRT (لم يتم إنشاء زر بعد وإضافته إلى SecureCRT)

يعمل يدويًا من قائمة البرنامج النصي

قائمة SecureCRT => البرنامج النصي => تشغيل…
- يتم تذكر آخر 10 نصوص وإتاحتها للتشغيل السريع:
قائمة SecureCRT => البرنامج النصي => 1 "اسم ملف البرنامج النصي"
قائمة SecureCRT => البرنامج النصي => 2 "اسم ملف البرنامج النصي"
قائمة SecureCRT => البرنامج النصي => 3 "اسم ملف البرنامج النصي"
قائمة SecureCRT => البرنامج النصي => 4 "اسم ملف البرنامج النصي"
قائمة SecureCRT => البرنامج النصي => 5 "اسم ملف البرنامج النصي"

البدء التلقائي بعد الاتصال (برنامج نصي لتسجيل الدخول)

تم تكوين إعدادات البرنامج النصي للتسجيل التلقائي للجلسة المحفوظة: الاتصال => إجراءات تسجيل الدخول => البرنامج النصي لتسجيل الدخول

أتمتة الإدخال في SecureCRT باستخدام البرامج النصية

تسجيل دخول تلقائي بدون استخدام برنامج نصي

من الممكن إدخال اسم المستخدم الخاص بكلمة المرور تلقائيًا دون كتابة نص برمجي ، وذلك باستخدام الوظيفة المضمنة في SecureCRT فقط. في إعدادات الاتصال "اتصال" => إجراءات تسجيل الدخول => أتمتة تسجيل الدخول - تحتاج إلى ملء عدة حزم - مما يعني أن الأزواج: "النص المتوقع" + "الأحرف المرسلة إلى هذا النص" يمكن أن يكون هناك العديد من هذه الأزواج. (على سبيل المثال: الزوج الأول ينتظر اسم المستخدم ، والثاني في انتظار كلمة المرور ، والثالث في انتظار موجه الوضع المميز ، والزوج الرابع لكلمة مرور الوضع المميز.)

مثال على تسجيل الدخول التلقائي إلى Cisco ASA:

أتمتة الإدخال في SecureCRT باستخدام البرامج النصية

التشغيل يدويًا باستخدام زر في SecureCRT (لم يتم إنشاء زر بعد وإضافته إلى SecureCRT)

في SecureCRT ، يمكنك تعيين برنامج نصي إلى زر. يضاف الزر إلى لوحة تم إنشاؤها خصيصًا لهذا الغرض.

أ. إضافة لوحة إلى الواجهة: SecureCRT Menu => View => Button Bar
ب. أضف زرًا إلى اللوحة وأضف نصًا. - انقر بزر الماوس الأيمن على شريط الأزرار وحدد "زر جديد ..." من قائمة السياق.
الخامس. في مربع الحوار "زر الخريطة" ، في حقل "الإجراء" ، حدد الإجراء "تشغيل النص البرمجي" (وظيفة).
حدد تسمية توضيحية للزر. لون رمز الزر. قم بإنهاء الإعدادات بالنقر فوق موافق.

أتمتة الإدخال في SecureCRT باستخدام البرامج النصية

ملاحظة:

اللوحة ذات الأزرار هي وظيفة مفيدة للغاية.

1. من الممكن ، عند تسجيل الدخول إلى جلسة معينة ، تحديد اللوحة المراد فتحها في علامة التبويب هذه افتراضيًا.

2. من الممكن تعيين إجراءات محددة مسبقًا للإجراءات القياسية باستخدام المعدات: عرض إصدار العرض ، وإظهار التكوين الجاري ، وحفظ التكوين.

أتمتة الإدخال في SecureCRT باستخدام البرامج النصية
لم يتم إرفاق أي نص برمجي بهذه الأزرار. سطر العمل فقط:

أتمتة الإدخال في SecureCRT باستخدام البرامج النصية
الإعداد - بحيث عند التبديل إلى جلسة ، يتم فتح اللوحة الضرورية مع الأزرار في إعدادات الجلسة:

أتمتة الإدخال في SecureCRT باستخدام البرامج النصية
من المنطقي أن يقوم العميل بإعداد برامج نصية فردية لتسجيل الدخول والانتقال إلى اللوحة باستخدام أوامر متكررة للبائع.

أتمتة الإدخال في SecureCRT باستخدام البرامج النصية
عندما تضغط على زر Go Cisco ، تتحول اللوحة إلى شريط أزرار Cisco.

أتمتة الإدخال في SecureCRT باستخدام البرامج النصية

أمثلة على استخدام البرامج النصية البسيطة والمتقدمة. (تدرب من واقع الحياة).

النصوص البسيطة تكفي لجميع المناسبات تقريبًا. ولكن بمجرد أن أحتاج إلى تعقيد السيناريو قليلاً - لتسريع العمل. طلب هذا التعقيد فقط بيانات إضافية في مربع حوار من المستخدم.

طلب البيانات من المستخدم باستخدام مربع حوار

كان لدي 2 في البرنامج النصي لطلب البيانات. هذا هو اسم المضيف والثماني بتات الرابعة من عنوان IP. لتنفيذ هذا الإجراء - بحثت في Google عن كيفية القيام بذلك ووجدته على الموقع الرسمي لـ 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 إلى معدات الشبكة.

أطلق هذا البرنامج النصي نافذة الأوامر (shell) الخاصة بي ونسخ البيانات عبر 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()

إدخال اسم المستخدم / كلمة المرور باستخدام البرنامج النصي

في أحد العملاء ، تم إغلاق الوصول إلى معدات الشبكة مباشرة. كان من الممكن إدخال الجهاز عن طريق الاتصال أولاً بالبوابة الافتراضية ، ومن ثم بالجهاز المتصل بها. تم استخدام عميل 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()

ملاحظة: كان هناك نصان ، أحدهما لحساب المسؤول ، والثاني لحساب 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 وأدخل.

والخلاصة:

عند كتابة السيناريو وتنفيذه ، يجب اتباع القاعدة: يجب ألا يزيد وقت كتابة نص وتنفيذ نصي عن الوقت الذي يقضيه نظريًا في القيام بنفس العمل يدويًا (نسخ / لصق من المفكرة والكتابة وتصحيح الأخطاء كتاب قواعد اللعبة لكتابة نص بيثون وكتابة وتصحيح الأخطاء). أي أن استخدام النص يجب أن يوفر الوقت ، ولا يضيع الوقت في أتمتة العمليات لمرة واحدة (أي عندما يكون النص فريدًا ولن يكون هناك المزيد من التكرار). ولكن إذا كان البرنامج النصي فريدًا وكان التشغيل التلقائي مع البرنامج النصي واستغرق كتابة / تصحيح البرنامج النصي وقتًا أقل من القيام بذلك بأي طريقة أخرى (نافذة أوامر غير مرئية) ، فإن البرنامج النصي هو الحل الأفضل.
تصحيح البرنامج النصي. ينمو البرنامج النصي تدريجيًا ، ويتم تصحيح الأخطاء عند التشغيل على الجهاز الأول والثاني والثالث ، وبحلول الرابع من المرجح أن يكون البرنامج النصي جاهزًا للعمل بشكل كامل.

عادةً ما يكون تشغيل برنامج نصي (عن طريق إدخال اسم المستخدم + كلمة المرور) بالماوس أسرع من نسخ اسم المستخدم وكلمة المرور من المفكرة. لكن ليس بمأمن من وجهة نظر أمنية.
مثال آخر (حقيقي) عند استخدام برنامج نصي: ليس لديك وصول مباشر إلى معدات الشبكة. ولكن هناك حاجة إلى تكوين جميع معدات الشبكة (قم بإدخالها في نظام المراقبة ، وقم بتكوين اسم مستخدم / كلمة مرور / اسم مستخدم / كلمة مرور snmpv3) إضافية. هناك وصول عندما تذهب إلى المفتاح الأساسي ، منه تفتح SSH إلى معدات أخرى. لماذا لا يمكنك استخدام Ansible. - لأننا نواجه حدًا لعدد الجلسات المتزامنة المسموح بها على معدات الشبكة (السطر vty 0 4 ، واجهة المستخدم vty 0 4) (سؤال آخر هو كيفية بدء تشغيل معدات مختلفة في Ansible باستخدام نفس الخطوة الأولى SSH).

يقلل البرنامج النصي من الوقت أثناء العمليات الطويلة - على سبيل المثال ، نسخ الملفات عبر FTP. بعد اكتمال النسخ ، يبدأ البرنامج النصي في العمل فورًا. سيحتاج الشخص إلى رؤية نهاية النسخ ، ثم إدراك نهاية النسخ ، ثم إدخال الأوامر المناسبة. يقوم البرنامج النصي بذلك بشكل أسرع بموضوعية.

البرامج النصية قابلة للتطبيق عندما يكون من المستحيل استخدام أدوات تسليم البيانات الجماعية: وحدة التحكم. أو عندما تكون بعض بيانات الجهاز فريدة: اسم المضيف وعنوان IP للإدارة. أو عند كتابة برنامج وتصحيح الأخطاء ، يكون الأمر أكثر صعوبة من إضافة البيانات الواردة من الجهاز أثناء تشغيل البرنامج النصي. - مثال مع برنامج نصي لوصف مسار ، عندما يكون لكل جهاز عنوان IP خاص به لمزود الإنترنت. (كتب زملائي مثل هذه النصوص - عندما تحدث DMVPN كان عددهم يزيد عن 3. كان من الضروري تغيير إعدادات DMVPN).

دراسة الحالة: تكوين الإعدادات الأولية على محول جديد باستخدام منافذ وحدة التحكم:

أ. قم بتوصيل كبل وحدة التحكم بالجهاز.
ب. قم بتشغيل البرنامج النصي
ب. انتظر تنفيذ السيناريو
د. قم بتوصيل كبل وحدة التحكم بالجهاز التالي.
E. إذا لم يكن المفتاح هو الأخير ، فانتقل إلى الخطوة ب.

نتيجة لعمل السيناريو:

  • تم تعيين كلمة المرور الأولية على الجهاز.
  • تم إدخال اسم المستخدم
  • يتم إدخال عنوان IP الفريد للجهاز.

ملاحظة: كان لابد من تكرار العملية. لأنه لم يتم تكوين / تعطيل ssh الافتراضي. (نعم ، هذا خطأي.)

المصادر المستخدمة.

1. حول إنشاء البرامج النصية
2. أمثلة البرنامج النصي

الملحق 1: نماذج البرامج النصية.


مثال على نص طويل ، مع استعلامين: اسم المضيف وعنوان IP. تم إنشاؤه من أجل الضبط المسبق للمعدات من خلال وحدة التحكم (9600 باود). وكذلك لتجهيز توصيل المعدات بالشبكة.

# $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 و Windows.

يوجد دعم البرنامج النصي (هذه المقالة)
هنالك نافذة الأوامر
نظام التشغيل التسلسلي / Telnet / SSH1 / SSH2 / Shell

المصدر: www.habr.com