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

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

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



المقدمة


تم تضمين محرك تنفيذ البرنامج النصي في برنامج SecureCRT من خارج منطقة الجزاء. لماذا نحتاج إلى نصوص برمجية في النهاية الطرفية:

  • الإدخال والإخراج الآلي ، والحد الأدنى من التحقق من صحة الإدخال / الإخراج.
  • لتسريع أداء المهام الروتينية - تقليل فترات التوقف المؤقت بين إعداد المعدات. (التخفيض الفعلي للإيقاف المؤقت الناجم عن الوقت اللازم للنسخ / الإجراءات السابقة على نفس الجهاز ، مع 3 أو أكثر من أجزاء الأوامر للاستخدام على المعدات.)

يصف هذا المستند المهام:

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


إنشاء نصوص بسيطة.


تستخدم أبسط البرامج النصية أمري إرسال و 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("admin\r")
  crt.Screen.WaitForString("Password:")
  crt.Screen.Send("Password")
  crt.Screen.Synchronous = False
main()

عادة ملف بملحق "* .py"

فبس


# $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 الأوامر والاستجابة اللاحقة للجهاز ويعرض برنامج نصي جاهز.

و. تشغيل تسجيل البرنامج النصي:
Menu SecureCRT => Script => Start Recording Script
b. تنفيذ الإجراءات مع وحدة التحكم (تنفيذ خطوات التكوين في CLI).
في. لإنهاء تسجيل البرنامج النصي:
Menu SecureCRT => Script => Stop Recording Script ...
احفظ الملف باستخدام البرنامج النصي.

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



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


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

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


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


قائمة SecureCRT => Script => Run ...
- يتم تذكر آخر 10 نصوص متاحة وهي متاحة
للتشغيل السريع: قائمة SecureCRT => Script => 1 "File name with script"
قائمة SecureCRT => Script => 2 "File file with script"
قائمة SecureCRT => Script => 3 "File name with script"
القائمة SecureCRT => Script => 4 "File name with script"
القائمة SecureCRT => Script => 5 "File name with script"

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


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



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


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

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



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


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

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



ملاحظة:

يعد شريط الأزرار ميزة مفيدة للغاية.

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

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


لا يوجد نص برمجي مرفق بهذه الأزرار. تمشيا مع الإجراءات فقط:


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


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


عند النقر فوق الزر Cisco Go ، تتحول اللوحة إلى Cisco Button Bar.



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


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

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


كان لدي 2 في البرنامج النصي لطلب البيانات. هذا هو اسم المضيف والثماني رقم 4 من عنوان 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(" 23\r")
	crt.Screen.Send("quit\r")
	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.1\r")
	crt.Screen.WaitForString("Name")
	crt.Screen.Send("admin\r")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Password\r")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("binary\r")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("put S5720LI-V200R011SPH016.pat\r")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("quit\r")
	crt.Screen.Synchronous = False
main()


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


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

# $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("snmpadmin\r")
	crt.Screen.WaitForString("assword:")
	crt.Screen.Send("Password\r")
	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-reklama\r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("show run | inc ip route\r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("conf t\r")
	crt.Screen.WaitForString("(config)#")
	crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ")
	crt.Screen.WaitForString("(config)#")
	crt.Screen.Send("end\r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("copy run sta\r")
	crt.Screen.WaitForString("[startup-config]?")
	crt.Screen.Send("\r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("exit\r")
	crt.Screen.Synchronous = False
main()

في هذا النص البرمجي ، في السطر: crt.Screen.Send ("ip route 10.10.10.8 255.255.255.252„) ، لا تتم إضافة عنوان IP للبوابة ولا يوجد حرف إرجاع لعلامة النقل. البرنامج النصي ينتظر السطر التالي مع ظهور الأحرف "(config) #". ظهرت هذه الأحرف بعد أن أدخلت عنوان IP وأدخل.

استنتاج:


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

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

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

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

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

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

الإجمالي بناءً على نتائج البرنامج النصي:

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

PS كان علي أن أكرر العملية. لأنه بشكل افتراضي لم يتم تكوين / إيقاف تشغيل 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("admin\r")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Password\r")
	crt.Screen.Send("sys\r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface Vlanif 1\r")
	crt.Screen.WaitForString("Vlanif1]")
	crt.Screen.Send("undo ip address\r")
	crt.Screen.Send("shutdown\r")
	crt.Screen.Send("vlan 100\r")
	crt.Screen.Send(" description description1\r")
	crt.Screen.Send(" name description1\r")
	crt.Screen.Send("vlan 110\r")
	crt.Screen.Send(" description description2\r")
	crt.Screen.Send(" name description2\r")
	crt.Screen.Send("vlan 120\r")
	crt.Screen.Send(" description description3\r")
	crt.Screen.Send(" name description3\r")
	crt.Screen.Send("vlan 130\r")
	crt.Screen.Send(" description description4\r")
	crt.Screen.Send(" name description4\r")
	crt.Screen.Send("vlan 140\r")
	crt.Screen.Send(" description description5\r")
	crt.Screen.Send(" name description5\r")
	crt.Screen.Send("vlan 150\r")
	crt.Screen.Send(" description description6\r")
	crt.Screen.Send(" name description6\r")
	crt.Screen.Send("vlan 160\r")
	crt.Screen.Send(" description description7\r")
	crt.Screen.Send(" name description7\r")
	crt.Screen.Send("vlan 170\r")
	crt.Screen.Send(" description description8\r")
	crt.Screen.Send(" name description8\r")               
	crt.Screen.Send("vlan 180\r")
	crt.Screen.Send(" description description9\r")
	crt.Screen.Send(" name description9\r")
	crt.Screen.Send("vlan 200\r")
	crt.Screen.Send(" description description10\r")
	crt.Screen.Send(" name description10\r")
	crt.Screen.Send("vlan 300\r")
	crt.Screen.Send(" description description11\r")
	crt.Screen.Send(" name description11\r")
	crt.Screen.Send("quit\r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("stp region-configuration\r")
	crt.Screen.Send("region-name desc\r")
	crt.Screen.Send("active region-configuration\r")
	crt.Screen.WaitForString("mst-region]")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("stp instance 0 priority 57344\r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface range GigabitEthernet 0/0/1 to GigabitEthernet 0/0/42\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Users\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type hybrid\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan 100 enable\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan legacy enable\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid pvid vlan 120\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid tagged vlan 100\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid untagged vlan 120\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enable\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021p\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action block\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trap\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("interface range GigabitEthernet 0/0/43 to GigabitEthernet 0/0/48\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Printers\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type access\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port default vlan 130\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enable\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021p\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action block\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trap\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("interface range XGigabitEthernet 0/0/1 to XGigabitEthernet 0/0/2\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description uplink\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type trunk\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 100 110 120 130 140 150 160 170 180 200\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 300\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action block\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trap\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.4\r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.2\r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.134\r")
	crt.Screen.Send("ip route-static 0.0.0.0 0.0.0.0 10.10.10.254\r")
	crt.Screen.Send("interface Vlanif 200\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]")
	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(" 24\r")
	crt.Screen.Send("quit\r")
	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("admin\r")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Password\r")
	crt.Screen.WaitForString(">")
	crt.Screen.Send("sys\r")
	crt.Screen.Send("stelnet server enable\r")
	crt.Screen.Send("aaa\r")
	crt.Screen.Send("local-user admin service-type terminal ftp http ssh\r")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("user-interface vty 0 4\r")
	crt.Screen.Send("authentication-mode aaa\r")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("quit\r")
	crt.Screen.Synchronous = False
main()


حول SecureCRT:
: 99$ ( SecureCRT )

1 , ( ), .

Mac OS X Windows.

( )
Command Window
Serial/Telnet/SSH1/SSH2/Shell

All Articles