ProHoster > بلوق > إدارة > أتمتة الإدخال في SecureCRT باستخدام البرامج النصية
أتمتة الإدخال في SecureCRT باستخدام البرامج النصية
غالبًا ما يواجه مهندسو الشبكات مهمة نسخ / لصق أجزاء معينة من المفكرة إلى وحدة التحكم. عادة ما يتعين عليك نسخ العديد من المعلمات: اسم المستخدم / كلمة المرور وشيء آخر. يتيح لك استخدام البرامج النصية تسريع هذه العملية. لكن مهام كتابة البرنامج النصي وتنفيذ البرنامج النصي يجب أن تستغرق وقتًا أقل إجمالاً من التكوين اليدوي ، وإلا فإن النصوص البرمجية غير مجدية.
ما هو هذا المقال ل؟ هذه المقالة مأخوذة من سلسلة Fast Start وتهدف إلى توفير وقت مهندسي الشبكات عند إعداد المعدات (مهمة واحدة) على أجهزة متعددة. يستخدم برنامج SecureCRT ووظيفة تنفيذ البرنامج النصي المضمنة. محتوى
يحتوي برنامج SecureCRT على آلية تنفيذ نصية مضمنة خارج الصندوق. ما هي البرامج النصية الطرفية ل؟
الإدخال / الإخراج الآلي ، والحد الأدنى من التحقق من صحة الإدخال / الإخراج.
تسريع تنفيذ المهام الروتينية - تقليل فترات التوقف المؤقت بين إعدادات الجهاز. (تقليل فعلي للإيقاف المؤقت الناتج عن الوقت لتنفيذ إجراءات النسخ / الماضي على نفس الجهاز ، مع تطبيق 3 أجزاء أوامر أو أكثر على الأجهزة.)
تغطي هذه الوثيقة المهام:
إنشاء نصوص بسيطة.
تشغيل البرامج النصية على SecureCRT.
أمثلة على استخدام البرامج النصية البسيطة والمتقدمة. (تدرب من واقع الحياة).
إنشاء نصوص بسيطة.
أبسط البرامج النصية تستخدم أمرين فقط ، Send و WaitForString. هذه الوظيفة كافية لـ 90٪ (أو أكثر) من المهام المنجزة.
يمكن أن تعمل البرامج النصية في Python و JS و VBS (Visual Basic) و Perl وما إلى ذلك.
# $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 => البرنامج النصي => تشغيل…
- يتم تذكر آخر 10 نصوص وإتاحتها للتشغيل السريع:
قائمة SecureCRT => البرنامج النصي => 1 "اسم ملف البرنامج النصي"
قائمة SecureCRT => البرنامج النصي => 2 "اسم ملف البرنامج النصي"
قائمة SecureCRT => البرنامج النصي => 3 "اسم ملف البرنامج النصي"
قائمة SecureCRT => البرنامج النصي => 4 "اسم ملف البرنامج النصي"
قائمة SecureCRT => البرنامج النصي => 5 "اسم ملف البرنامج النصي"
البدء التلقائي بعد الاتصال (برنامج نصي لتسجيل الدخول)
تم تكوين إعدادات البرنامج النصي للتسجيل التلقائي للجلسة المحفوظة: الاتصال => إجراءات تسجيل الدخول => البرنامج النصي لتسجيل الدخول
تسجيل دخول تلقائي بدون استخدام برنامج نصي
من الممكن إدخال اسم المستخدم الخاص بكلمة المرور تلقائيًا دون كتابة نص برمجي ، وذلك باستخدام الوظيفة المضمنة في SecureCRT فقط. في إعدادات الاتصال "اتصال" => إجراءات تسجيل الدخول => أتمتة تسجيل الدخول - تحتاج إلى ملء عدة حزم - مما يعني أن الأزواج: "النص المتوقع" + "الأحرف المرسلة إلى هذا النص" يمكن أن يكون هناك العديد من هذه الأزواج. (على سبيل المثال: الزوج الأول ينتظر اسم المستخدم ، والثاني في انتظار كلمة المرور ، والثالث في انتظار موجه الوضع المميز ، والزوج الرابع لكلمة مرور الوضع المميز.)
مثال على تسجيل الدخول التلقائي إلى Cisco ASA:
التشغيل يدويًا باستخدام زر في SecureCRT (لم يتم إنشاء زر بعد وإضافته إلى SecureCRT)
في SecureCRT ، يمكنك تعيين برنامج نصي إلى زر. يضاف الزر إلى لوحة تم إنشاؤها خصيصًا لهذا الغرض.
أ. إضافة لوحة إلى الواجهة: SecureCRT Menu => View => Button Bar
ب. أضف زرًا إلى اللوحة وأضف نصًا. - انقر بزر الماوس الأيمن على شريط الأزرار وحدد "زر جديد ..." من قائمة السياق.
الخامس. في مربع الحوار "زر الخريطة" ، في حقل "الإجراء" ، حدد الإجراء "تشغيل النص البرمجي" (وظيفة).
حدد تسمية توضيحية للزر. لون رمز الزر. قم بإنهاء الإعدادات بالنقر فوق موافق.
ملاحظة:
اللوحة ذات الأزرار هي وظيفة مفيدة للغاية.
1. من الممكن ، عند تسجيل الدخول إلى جلسة معينة ، تحديد اللوحة المراد فتحها في علامة التبويب هذه افتراضيًا.
2. من الممكن تعيين إجراءات محددة مسبقًا للإجراءات القياسية باستخدام المعدات: عرض إصدار العرض ، وإظهار التكوين الجاري ، وحفظ التكوين.
لم يتم إرفاق أي نص برمجي بهذه الأزرار. سطر العمل فقط:
الإعداد - بحيث عند التبديل إلى جلسة ، يتم فتح اللوحة الضرورية مع الأزرار في إعدادات الجلسة:
من المنطقي أن يقوم العميل بإعداد برامج نصية فردية لتسجيل الدخول والانتقال إلى اللوحة باستخدام أوامر متكررة للبائع.
عندما تضغط على زر Go Cisco ، تتحول اللوحة إلى شريط أزرار Cisco.
أمثلة على استخدام البرامج النصية البسيطة والمتقدمة. (تدرب من واقع الحياة).
النصوص البسيطة تكفي لجميع المناسبات تقريبًا. ولكن بمجرد أن أحتاج إلى تعقيد السيناريو قليلاً - لتسريع العمل. طلب هذا التعقيد فقط بيانات إضافية في مربع حوار من المستخدم.
طلب البيانات من المستخدم باستخدام مربع حوار
كان لدي 2 في البرنامج النصي لطلب البيانات. هذا هو اسم المضيف والثماني بتات الرابعة من عنوان IP. لتنفيذ هذا الإجراء - بحثت في Google عن كيفية القيام بذلك ووجدته على الموقع الرسمي لـ SecureCRT (vandyke). - الوظيفة تسمى موجه.
طلب هذا الجزء من البرنامج النصي اسم المضيف والأرقام من الثمانية الأخيرة. منذ أن كان هناك 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 الافتراضي. (نعم ، هذا خطأي.)
مثال على نص طويل ، مع استعلامين: اسم المضيف وعنوان IP. تم إنشاؤه من أجل الضبط المسبق للمعدات من خلال وحدة التحكم (9600 باود). وكذلك لتجهيز توصيل المعدات بالشبكة.
عادة لا تكون هناك حاجة لمثل هذه البرامج النصية ، لكن كمية المعدات 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