Prohoster > Blog > quản lý > Tự động hóa mục nhập trong SecureCRT bằng cách sử dụng tập lệnh
Tự động hóa mục nhập trong SecureCRT bằng cách sử dụng tập lệnh
Các kỹ sư mạng thường phải đối mặt với nhiệm vụ sao chép/dán một số đoạn nhất định từ notepad sang bảng điều khiển. Bạn thường phải sao chép một số tham số: Tên người dùng/Mật khẩu và một số thứ khác. Việc sử dụng các tập lệnh cho phép bạn tăng tốc quá trình này. NHƯNG các tác vụ viết tập lệnh và thực thi tập lệnh sẽ mất ít thời gian hơn so với cấu hình thủ công, nếu không thì các tập lệnh sẽ vô dụng.
Bài viết này để làm gì? Bài viết này nằm trong loạt bài Khởi động nhanh và nhằm mục đích tiết kiệm thời gian cho các kỹ sư mạng khi thiết lập thiết bị (tác vụ đơn lẻ) trên nhiều thiết bị. Sử dụng phần mềm SecureCRT và chức năng thực thi tập lệnh tích hợp. nội dung
Chương trình SecureCRT có cơ chế thực thi tập lệnh tích hợp sẵn. Tập lệnh đầu cuối để làm gì?
I/O tự động và xác thực I/O tối thiểu.
Tăng tốc độ thực hiện các tác vụ thông thường - giảm tạm dừng giữa các cài đặt thiết bị. (Trên thực tế, việc giảm tạm dừng do thời gian thực hiện các hành động sao chép/quá khứ trên cùng một phần cứng, với 3 đoạn lệnh trở lên được áp dụng cho phần cứng.)
Tài liệu này bao gồm các nhiệm vụ:
Tạo các kịch bản đơn giản.
Chạy tập lệnh trên SecureCRT.
Ví dụ về sử dụng tập lệnh đơn giản và nâng cao. (Thực hành từ cuộc sống thực.)
Tạo các kịch bản đơn giản.
Các tập lệnh đơn giản nhất chỉ sử dụng hai lệnh, Send và WaitForString. Chức năng này đủ cho 90% (hoặc hơn) các tác vụ được thực hiện.
Tập lệnh có thể hoạt động trong Python, JS, VBS (Visual Basic), Perl, v.v.
# $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
Thường là một tệp có phần mở rộng "*.vbs"
Tạo tập lệnh bằng mục nhập tập lệnh.
Cho phép bạn tự động hóa quá trình viết kịch bản. Bạn bắt đầu viết một kịch bản. SecureCRT ghi lại các lệnh và phản hồi phần cứng tiếp theo, đồng thời hiển thị tập lệnh đã hoàn thành cho bạn.
MỘT. Bắt đầu viết kịch bản:
Menu SecureCRT => Tập lệnh => Bắt đầu ghi tập lệnh
b. Thực hiện các thao tác với bảng điều khiển (thực hiện các bước cấu hình trong CLI).
v.v. Viết xong kịch bản:
Menu SecureCRT => Tập lệnh => Dừng ghi tập lệnh…
Lưu tập tin kịch bản.
Ví dụ về các lệnh đã thực hiện và tập lệnh đã lưu:
Chạy tập lệnh trên SecureCRT.
Sau khi tạo/chỉnh sửa tập lệnh, một câu hỏi tự nhiên xuất hiện: Làm cách nào để áp dụng tập lệnh?
Có một số cách:
Chạy thủ công từ menu Script
Tự động bắt đầu sau khi kết nối (tập lệnh đăng nhập)
Đăng nhập tự động mà không cần sử dụng tập lệnh
Kích hoạt thủ công bằng một nút trong SecureCRT (một nút chưa được tạo và thêm vào SecureCRT)
Chạy thủ công từ menu Script
Menu SecureCRT => Tập lệnh => Chạy…
- 10 tập lệnh cuối cùng được ghi nhớ và có sẵn để khởi chạy nhanh:
Menu SecureCRT => Tập lệnh => 1 "Tên tệp tập lệnh"
Menu SecureCRT => Tập lệnh => 2 "Tên tệp tập lệnh"
Menu SecureCRT => Tập lệnh => 3 "Tên tệp tập lệnh"
Menu SecureCRT => Tập lệnh => 4 "Tên tệp tập lệnh"
Menu SecureCRT => Tập lệnh => 5 "Tên tệp tập lệnh"
Tự động bắt đầu sau khi kết nối (tập lệnh đăng nhập)
Cài đặt tập lệnh ghi nhật ký tự động được định cấu hình cho phiên đã lưu: Kết nối => Hành động đăng nhập => Tập lệnh đăng nhập
Đăng nhập tự động mà không cần sử dụng tập lệnh
Có thể tự động nhập tên người dùng của mật khẩu mà không cần viết tập lệnh, chỉ sử dụng chức năng tích hợp của SecureCRT. Trong cài đặt kết nối “Kết nối” => Thao tác đăng nhập => Đăng nhập tự động - bạn cần điền vào một số gói - nghĩa là các cặp: “Văn bản mong đợi” + “Ký tự đã gửi tới văn bản này” có thể có nhiều cặp như vậy. (Ví dụ: cặp thứ nhất chờ tên người dùng, cặp thứ hai chờ mật khẩu, cặp thứ ba chờ lời nhắc chế độ đặc quyền, cặp thứ tư chờ mật khẩu chế độ đặc quyền.)
Ví dụ về đăng nhập tự động trên Cisco ASA:
Kích hoạt thủ công bằng một nút trong SecureCRT (một nút chưa được tạo và thêm vào SecureCRT)
Trong SecureCRT, bạn có thể gán tập lệnh cho một nút. Nút này được thêm vào bảng điều khiển được tạo riêng cho mục đích này.
MỘT. Thêm panel vào giao diện: SecureCRT Menu => View => Button Bar
b. Thêm một nút vào bảng điều khiển và thêm một tập lệnh. – Nhấp chuột phải vào Thanh nút và chọn “Nút mới…” từ menu ngữ cảnh.
v.v. Trong hộp thoại "Nút bản đồ", trong trường "Hành động", chọn hành động (chức năng) "Chạy tập lệnh".
Chỉ định chú thích cho nút. Màu sắc cho biểu tượng nút. Kết thúc cài đặt bằng cách nhấp vào Ok.
Lưu ý:
Bảng điều khiển với các nút chức năng rất hữu ích.
1. Có thể, khi Đăng nhập vào một phiên cụ thể, để chỉ định bảng điều khiển nào sẽ mở cho tab này theo mặc định.
2. Có thể thiết lập các hành động được xác định trước cho các hành động tiêu chuẩn với thiết bị: hiển thị phiên bản hiển thị, hiển thị cấu hình đang chạy, lưu cấu hình.
Không có tập lệnh nào được đính kèm với các nút này. Chỉ dòng hành động:
Cài đặt - để khi chuyển sang phiên, bảng điều khiển cần thiết có các nút sẽ mở ra trong cài đặt phiên:
Sẽ hợp lý nếu khách hàng thiết lập các tập lệnh riêng lẻ để Đăng nhập và chuyển đến bảng điều khiển với các lệnh thường xuyên dành cho nhà cung cấp.
Khi bạn nhấn nút Go Cisco, bảng điều khiển sẽ chuyển sang Cisco Button Bar.
Ví dụ về sử dụng tập lệnh đơn giản và nâng cao. (Thực hành từ cuộc sống thực.)
Kịch bản đơn giản là đủ cho hầu hết các trường hợp. Nhưng một khi tôi cần làm phức tạp kịch bản một chút - để tăng tốc công việc. Sự phức tạp này chỉ đơn giản là yêu cầu dữ liệu bổ sung trong hộp thoại từ người dùng.
Yêu cầu dữ liệu từ người dùng bằng hộp thoại
Tôi có 2 trong tập lệnh yêu cầu dữ liệu. Đây là Tên máy chủ và octet thứ 4 của địa chỉ IP. Để thực hiện thao tác này - Tôi đã tìm hiểu cách thực hiện trên google và tìm thấy nó trên trang web chính thức của SecureCRT (vandyke). - chức năng được gọi là dấu nhắc.
Phần này của tập lệnh đã yêu cầu Tên máy chủ và các số từ octet cuối cùng. Vì có 15 thiết bị. Và dữ liệu được trình bày trong một bảng, sau đó tôi sao chép các giá trị từ bảng và dán vào các hộp thoại. Hơn nữa, kịch bản hoạt động độc lập.
Sao chép FTP vào thiết bị mạng.
Tập lệnh này đã khởi chạy cửa sổ lệnh (shell) của tôi và sao chép dữ liệu qua FTP. Cuối cùng, đóng phiên. Không thể sử dụng notepad cho việc này vì việc sao chép mất rất nhiều thời gian và dữ liệu trong bộ đệm FTP sẽ không được lưu trữ lâu như vậy:
# $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()
Nhập tên người dùng/mật khẩu bằng tập lệnh
Tại một thời điểm khách hàng truy cập trực tiếp vào thiết bị mạng đã bị đóng. Có thể vào thiết bị bằng cách kết nối đầu tiên với Cổng mặc định, rồi từ đó đến thiết bị được kết nối với nó. Máy khách ssh được tích hợp trong phần mềm IOS/phần cứng đã được sử dụng để kết nối. Theo đó, tên người dùng và mật khẩu đã được yêu cầu trong bảng điều khiển. Với tập lệnh bên dưới, tên người dùng và mật khẩu đã được nhập tự động:
# $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()
Lưu ý: Có 2 tập lệnh, một dành cho tài khoản quản trị viên, tập lệnh thứ hai dành cho tài khoản eSIGHT.
Tập lệnh có khả năng nối thêm dữ liệu trực tiếp trong quá trình thực thi tập lệnh.
Nhiệm vụ là thêm một tuyến tĩnh trên tất cả các thiết bị mạng. Nhưng cổng vào Internet trên mỗi thiết bị là khác nhau (và nó khác với cổng mặc định). Đoạn script sau hiển thị bảng định tuyến, vào chế độ cấu hình, không ghi lệnh vào cuối (địa chỉ IP của cổng vào Internet) - Tôi đã thêm phần này. Sau khi tôi nhấn Enter, tập lệnh tiếp tục thực thi lệnh.
# $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()
Trong tập lệnh này, trong dòng: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") địa chỉ IP của cổng không được thêm vào và không có ký tự xuống dòng. Tập lệnh đang đợi dòng tiếp theo có ký tự "(config) #" Các ký tự này xuất hiện sau khi tôi nhập địa chỉ ip và nhập.
Kết luận:
Khi viết và thực thi tập lệnh, phải tuân theo quy tắc: Thời gian để viết tập lệnh và thực thi tập lệnh không bao giờ được nhiều hơn thời gian về mặt lý thuyết dành cho việc thực hiện cùng một công việc theo cách thủ công (sao chép/dán từ notepad, viết và gỡ lỗi một playbook cho ansible, viết và gỡ lỗi tập lệnh python). Nghĩa là, việc sử dụng tập lệnh sẽ tiết kiệm thời gian và không lãng phí thời gian vào việc tự động hóa các quy trình một lần (nghĩa là khi tập lệnh là duy nhất và sẽ không còn sự lặp lại nữa). Nhưng nếu tập lệnh là duy nhất và tự động hóa với tập lệnh và viết/gỡ lỗi tập lệnh mất ít thời gian hơn so với thực hiện theo bất kỳ cách nào khác (ansible, cửa sổ lệnh), thì tập lệnh là giải pháp tốt nhất.
Gỡ lỗi một tập lệnh. Tập lệnh phát triển dần dần, quá trình gỡ lỗi diễn ra khi chạy trên thiết bị thứ nhất, thứ hai, thứ ba và đến thiết bị thứ tư, tập lệnh rất có thể sẽ hoạt động đầy đủ.
Chạy tập lệnh (bằng cách nhập tên người dùng + mật khẩu) bằng chuột thường nhanh hơn sao chép Tên người dùng và Mật khẩu từ notepad. Nhưng không an toàn từ quan điểm bảo mật.
Một ví dụ (thực tế) khác khi sử dụng tập lệnh: Bạn không có quyền truy cập trực tiếp vào thiết bị mạng. Nhưng cần phải cấu hình tất cả các thiết bị mạng (đưa vào hệ thống giám sát, cấu hình thêm Username/password/snmpv3username/password). Có quyền truy cập khi bạn chuyển đến Core switch, từ đó bạn mở SSH sang các thiết bị khác. Tại sao bạn không thể sử dụng Ansible. - Bởi vì chúng tôi gặp phải giới hạn về số lượng phiên đồng thời được phép trên thiết bị mạng (dòng vty 0 4, giao diện người dùng vty 0 4) (một câu hỏi khác là làm thế nào để khởi động các thiết bị khác nhau trong Ansible với cùng một bước nhảy SSH đầu tiên).
Tập lệnh giảm thời gian trong các thao tác dài - ví dụ: sao chép tệp qua FTP. Sau khi sao chép xong, tập lệnh ngay lập tức bắt đầu hoạt động. Một người sẽ cần xem kết thúc sao chép, sau đó nhận ra kết thúc sao chép, sau đó nhập các lệnh thích hợp. Kịch bản thực hiện nó một cách khách quan nhanh hơn.
Các tập lệnh được áp dụng khi không thể sử dụng các công cụ phân phối dữ liệu hàng loạt: Console. Hoặc khi một số dữ liệu cho thiết bị là duy nhất: tên máy chủ, địa chỉ ip quản lý. Hoặc khi viết chương trình và gỡ lỗi sẽ khó hơn là thêm dữ liệu nhận được từ thiết bị trong khi tập lệnh đang chạy. - Một ví dụ với tập lệnh chỉ định tuyến đường, khi mỗi thiết bị có địa chỉ IP riêng của nhà cung cấp Internet. (Các đồng nghiệp của tôi đã viết các tập lệnh như vậy - khi DMVPN có hơn 3 lượt phát biểu. Cần phải thay đổi cài đặt DMVPN).
Nghiên cứu điển hình: Định cấu hình Cài đặt ban đầu trên Công tắc mới bằng Cổng điều khiển:
A. Đã cắm cáp điều khiển vào thiết bị.
B. Chạy tập lệnh
B. Chờ thực thi tập lệnh
D. Đã cắm cáp điều khiển vào thiết bị tiếp theo.
E. Nếu công tắc không phải là công tắc cuối cùng, hãy chuyển sang bước B.
Là kết quả của công việc của kịch bản:
mật khẩu ban đầu được đặt trên thiết bị.
Tên người dùng đã nhập
địa chỉ IP duy nhất của thiết bị được nhập.
PS các hoạt động đã phải được lặp lại. Bởi vì ssh mặc định không được định cấu hình/tắt. (Vâng, đây là sai lầm của tôi.)
Ví dụ về một tập lệnh dài, với hai truy vấn: Tên máy chủ và địa chỉ IP. Nó được tạo ra để cài đặt trước thiết bị thông qua bảng điều khiển (9600 baud). Và cũng để chuẩn bị kết nối thiết bị với mạng.
Các tập lệnh như vậy thường không cần thiết, nhưng số lượng thiết bị là 15 chiếc. Cho phép thiết lập nhanh hơn. Cài đặt thiết bị bằng cửa sổ Lệnh SecureCRT nhanh hơn.
Thiết lập một tài khoản cho ssh.
Một vi dụ khac. Cấu hình cũng thông qua bảng điều khiển.
# $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()
Giới thiệu về SecureCRT:Phần mềm trả phí: từ 99$ (giá nhỏ nhất chỉ dành cho SecureCRT XNUMX năm) Trang web chính thức
Giấy phép phần mềm được mua một lần, với sự hỗ trợ (để cập nhật), sau đó phần mềm được sử dụng với giấy phép này trong thời gian không giới hạn.
Hoạt động trên hệ điều hành Mac OS X và Windows.
Có hỗ trợ kịch bản (bài viết này)
Có Cửa sổ lệnh
Nối tiếp/Telnet/SSH1/SSH2/Hệ điều hành Shell