ProHoster > وبلاگ > اداره > خودکار کردن ورود در SecureCRT با استفاده از اسکریپت
خودکار کردن ورود در SecureCRT با استفاده از اسکریپت
مهندسان شبکه اغلب با وظیفه کپی/پیست کردن قطعات خاصی از دفترچه یادداشت به کنسول روبرو هستند. معمولاً باید چندین پارامتر را کپی کنید: نام کاربری / رمز عبور و چیز دیگری. استفاده از اسکریپت ها به شما این امکان را می دهد که این روند را تسریع کنید. اما وظایف نوشتن اسکریپت و اجرای اسکریپت باید در کل زمان کمتری نسبت به پیکربندی دستی ببرد، در غیر این صورت اسکریپت ها بی فایده هستند.
این مقاله برای چیست؟ این مقاله از سری Fast Start است و هدف آن صرفه جویی در زمان مهندسان شبکه هنگام راه اندازی تجهیزات (تک کار) در چندین دستگاه است. از نرم افزار SecureCRT و عملکرد داخلی اجرای اسکریپت استفاده می کند. مقدار
برنامه SecureCRT دارای یک مکانیسم داخلی برای اجرای اسکریپت خارج از جعبه است. اسکریپت های ترمینال برای چیست؟
I/O خودکار و حداقل اعتبار I/O.
تسریع در اجرای وظایف معمول - کاهش مکث بین تنظیمات تجهیزات. (کاهش عملاً مکث های ناشی از زمان برای انجام اقدامات کپی/گذشته روی همان سخت افزار، با 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 => Script => Start Recording Script
ب اقدامات را با کنسول انجام دهید (مراحل پیکربندی را در CLI انجام دهید).
V. نوشتن فیلمنامه را تمام کنید:
منوی SecureCRT => اسکریپت => توقف اسکریپت ضبط…
فایل اسکریپت را ذخیره کنید.
نمونه ای از دستورات اجرا شده و اسکریپت ذخیره شده:
اجرای اسکریپت ها در SecureCRT.
پس از ایجاد/ویرایش اسکریپت، یک سوال طبیعی مطرح می شود: چگونه اسکریپت را اعمال کنیم؟
چندین روش وجود دارد:
اجرای دستی از منوی Script
شروع خودکار پس از اتصال (اسکریپت ورود)
ورود خودکار بدون استفاده از اسکریپت
راه اندازی دستی با یک دکمه در SecureCRT (دکمه ای هنوز ایجاد و به SecureCRT اضافه نشده است)
اجرای دستی از منوی Script
منوی SecureCRT => اسکریپت => اجرا…
- 10 اسکریپت آخر به خاطر سپرده شده و برای راه اندازی سریع در دسترس هستند:
منوی SecureCRT => اسکریپت => 1 "نام فایل اسکریپت"
منوی SecureCRT => اسکریپت => 2 "نام فایل اسکریپت"
منوی SecureCRT => اسکریپت => 3 "نام فایل اسکریپت"
منوی SecureCRT => اسکریپت => 4 "نام فایل اسکریپت"
منوی SecureCRT => اسکریپت => 5 "نام فایل اسکریپت"
شروع خودکار پس از اتصال (اسکریپت ورود)
تنظیمات اسکریپت ثبت خودکار برای جلسه ذخیره شده پیکربندی شده است: Connection => Logon Actions => Logon script
ورود خودکار بدون استفاده از اسکریپت
تنها با استفاده از عملکرد داخلی SecureCRT، می توان به طور خودکار نام کاربری رمز عبور را بدون نوشتن اسکریپت وارد کرد. در تنظیمات اتصال "اتصال" => اقدامات ورود => ورود خودکار - باید چندین بسته را پر کنید - که به معنای جفت ها است: "متن مورد انتظار" + "کاراکترهای ارسال شده به این متن" می تواند بسیاری از این جفت ها وجود داشته باشد. (مثال: جفت اول در انتظار نام کاربری، دوم در انتظار رمز عبور، سوم در انتظار اعلان حالت ممتاز، جفت چهارم برای رمز عبور حالت ممتاز.)
نمونه ای از ورود خودکار در Cisco ASA:
راه اندازی دستی با یک دکمه در SecureCRT (دکمه ای هنوز ایجاد و به SecureCRT اضافه نشده است)
در SecureCRT می توانید یک اسکریپت را به یک دکمه اختصاص دهید. دکمه به پانلی که مخصوص این منظور ایجاد شده است اضافه می شود.
آ. افزودن یک پنل به رابط: SecureCRT Menu => View => Button Bar
ب یک دکمه به پنل اضافه کنید و یک اسکریپت اضافه کنید. - بر روی نوار دکمه راست کلیک کرده و "دکمه جدید..." را از منوی زمینه انتخاب کنید.
V. در کادر محاورهای «دکمه نقشه»، در قسمت «عمل»، عمل (عملکرد) «اجرای اسکریپت» را انتخاب کنید.
یک عنوان برای دکمه مشخص کنید. رنگ نماد دکمه تنظیمات را با کلیک بر روی Ok به پایان برسانید.
توجه:
پانل با دکمه ها عملکرد بسیار مفیدی است.
1. ممکن است، هنگام ورود به یک جلسه خاص، مشخص کنید که کدام پنل به صورت پیش فرض در این تب باز شود.
2. امکان تنظیم اقدامات از پیش تعریف شده برای اقدامات استاندارد با تجهیزات وجود دارد: نمایش نسخه نمایش، نمایش در حال اجرا-پیکربندی، ذخیره پیکربندی.
هیچ اسکریپتی به این دکمه ها متصل نیست. فقط خط اقدام:
تنظیمات - به طوری که هنگام جابجایی به یک جلسه، پانل لازم با دکمه ها در تنظیمات جلسه باز می شود:
منطقی است که مشتری اسکریپت های جداگانه ای را برای ورود تنظیم کند و با دستورات مکرر برای فروشنده به پنل برود.
هنگامی که دکمه Go Cisco را فشار می دهید، پانل به نوار دکمه سیسکو تغییر می کند.
نمونه هایی از استفاده از اسکریپت های ساده و پیشرفته. (از زندگی واقعی تمرین کنید.)
اسکریپت های ساده تقریبا برای همه موارد کافی است. اما یک بار نیاز داشتم که فیلمنامه را کمی پیچیده کنم - برای سرعت بخشیدن به کار. این عارضه فقط داده های اضافی را در یک کادر محاوره ای از کاربر درخواست کرد.
درخواست داده از کاربر با استفاده از کادر محاوره ای
من در اسکریپت درخواست داده 2 داشتم. این نام میزبان و اکتت چهارم آدرس IP است. برای انجام این عمل - نحوه انجام آن را در گوگل جستجو کردم و آن را در وب سایت رسمی SecureCRT (vandyke) پیدا کردم. - عملکرد سریع نامیده می شود.
این قسمت از اسکریپت نام میزبان و اعداد از آخرین اکتت را میخواست. از آنجایی که 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 پیش فرض پیکربندی/غیرفعال نشده بود. (بله، این اشتباه من است.)
نمونه ای از یک اسکریپت طولانی، با دو پرس و جو: نام میزبان و آدرس IP. برای تنظیم تجهیزات از طریق کنسول (9600 baud) ایجاد شده است. و همچنین برای آماده سازی اتصال تجهیزات به شبکه.
چنین اسکریپت هایی معمولاً مورد نیاز نیستند، اما مقدار تجهیزات 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