Trong bối cảnh này, Python là một công cụ hỗ trợ mạnh mẽ, mang lại hiệu quả cao trong việc tự động hóa các tác vụ.Chính vì những lý do trên, nhóm chúng em đã chọn đề tài "Tìm hiểu và bac
Trang 1ĐẠI HỌC DUY TÂN TRƯỜNG KHOA HỌC MÁY TÍNH
KHOA KỸ THUẬT MẠNG MÁY TÍNH & TRUYỀN THÔNG
-
-ĐỒ ÁN NHÓM Môn học:
ĐỒ ÁN PERL & PYTHON
Thành viên 2 : Lê Hoà Bình-5925
Thành viên 3 : Nguyễn Hữu Bình-2026 Thành viên 4 : Trương Thế Việt Cường- 2917
i
Trang 2Đà Nẵng ,16/12/2023
ii
Trang 3MỤC LỤC:
MỞ ĐẦU _iv
Ý tưởng ivMục tiêu tìm hiểu _ivĐối tượng nghiên cứu ivPhương pháp nghiên cứu vCấu trúc đồ án nhóm _vCHƯƠNG 1 CƠ SỞ LÝ THUYẾT _11.1 Tổng quan về backup cấu hình _11.1.1 Backup cấu hình _11.1.2 Ưu điểm của việc backup cấu hình _11.1.3 Backup cấu hình tự động 11.1.4 Ưu điểm của backup cấu hình tự động 21.2 Một số công cụ hỗ trợ backup cấu hình mạng _2CHƯƠNG 2 GIỚI THIỆU VỀ NGÔN NGỮ PYTHON VÀ MỘT SỐ THƯ VIỆN HỖTRỢ BACKUP CẤU HÌNH MẠNG 52.1 Giới thiệu về Python _52.1.1 Ngôn ngữ lập trình Python _52.1.2 Lịch sử hình thành _52.1.3 Những lợi ích mà Python mang lại _62.1.4 Những ứng dụng của Python _62.2 Một số thư viện hỗ trợ backup cấu hình mạng _7CHƯƠNG 3 TRIỂN KHAI HỆ THỐNG 103.1 Sơ đồ triển khai trên Eve _103.2 Kịch bản _103.3 Triển khai 10KẾT LUẬN 22A) Kết luận _22
iii
Trang 4B) Kết quả đạt được 22C) Hướng phát triển 22BẢNG PHÂN CHIA CÔNG VIỆC 23NHẬN XÉT CHO ĐIỂM ĐÁNH GIÁ CỦA GIẢNG VIÊN 24TÀI LIỆU THAM KHẢO _25
iv
Trang 5MỞ ĐẦU
Ý tưởng
Ngày nay, với sự phát triển nhanh chóng của khoa học công nghệ, công việc củangười quản trị mạng trở nên ngày càng khó khăn do áp lực công việc tăng cao Để giảmtải cho người quản trị, việc triển khai quá trình tự động hóa trở nên cực kỳ quan trọng Tựđộng hóa có thể áp dụng trong nhiều tác vụ, như tự động sao lưu dữ liệu, viết email tựđộng, tải xuống tự động, và quan trọng nhất là quá trình Sao lưu cấu hình tự động chothiết bị mạng.Việc sao lưu cấu hình tự động đặc biệt quan trọng, không chỉ giúp giảm áplực công việc mà còn đóng vai trò quan trọng trong việc khắc phục sự cố để duy trì hoạtđộng của doanh nghiệp Trong bối cảnh này, Python là một công cụ hỗ trợ mạnh mẽ,mang lại hiệu quả cao trong việc tự động hóa các tác vụ.Chính vì những lý do trên, nhómchúng em đã chọn đề tài "Tìm hiểu và backup cấu hình tự động cho thiết bị mạng." Qua
đó, chúng em muốn tập trung nghiên cứu và triển khai một giải pháp tự động hóa sángtạo, đặc biệt là trong việc sao lưu cấu hình của thiết bị mạng Điều này không chỉ giúpnâng cao hiệu suất công việc mà còn đảm bảo tính ổn định và an toàn cho hệ thống mạngcủa tổ chức
- Triển khai được hệ thống backup cấu hình cho thiết bị mạng
Đối tượng nghiên cứu
- Nghiên cứu áp dụng cho các loại hệ thống mạng như LAN (Mạng Cục bộ), WAN(Mạng Rộng), hoặc MAN (Mạng Trung ương)
- Tập trung vào các thiết bị mạng như Router, Switch, Firewall, và các thiết bị kháccần quản lý cấu hình
- Nghiên cứu có thể xoay quanh các hệ điều hành thường được sử dụng trong thiết
bị mạng
v
Trang 6- Tìm hiểu và phân tích các phần mềm quản lý mạng có sẵn để thực hiện quá trìnhsao lưu tự động Điều này có thể bao gồm các ứng dụng như SolarWinds, Nagios, hoặccác giải pháp tương tự.
- Đối với việc sao lưu cấu hình mạng, an ninh thông tin là một yếu tố quan trọng
- Xem xét các phương pháp và công cụ tự động hóa để thực hiện quá trình sao lưucấu hình mạng, có thể bao gồm việc sử dụng kịch bản, scripting, hoặc các công nghệ tựđộng hóa như Ansible, solarwinds, hoặc rconfig
Phương pháp nghiên cứu
- Lý thuyết : Tìm hiểu lý thuyết cơ bản về backup cấu hình,python,các công cụ hỗtrợ backup khác.Tham khảo từ các trang web và nền tảng youtube
- Thực nghiệm: Cài đặt cấu hình cho các thiết bị mạng (PC,Router,Switch, ) trêncông cụ mô phỏng Eve-ng
Cấu trúc đồ án nhóm
Đồ án gồm phần mở đầu ,3 chương và phần kết luận
Chương 1:Cơ sở lý thuyết
Chương này nói về các lý thuyết liên quan đến backup cấu hình thiết bị mạng tựđộng,và một số các công cụ hỗ trợ backup cấu hình
Chương 2:Giới thiệu về ngôn ngữ python và một số thư viện hỗ trợ backup cấu hìnhmạng
Chương này sẽ giới thiệu về ngôn ngữ lập trình python (lợi ích ,lịch sử hìnhthành ,ứng dụng của python, ).Và một số thư viện hỗ trợ backup cấu hình tự động chothiết bị mạng
Chương 3: Triển khai hệ thống
Chương này sẽ thực hiện việc triển khai backup cấu hình tự động cho thiết bị mạngtrên môi trường giả lập Eve-ng
vi
Trang 7CHƯƠNG 1 CƠ SỞ LÝ THUYẾT
1.1 Tổng quan về backup cấu hình
1.1.1 Backup cấu hình
Backup cấu hình (configuration backup) là quá trình sao lưu và lưu trữ thông tin cấuhình của một hệ thống hoặc thiết bị máy tính vào một vị trí an toàn để sử dụng sau này.Thông tin cấu hình này có thể bao gồm các tùy chọn, thiết lập, và thông số kỹ thuật màbạn đã định cấu hình cho hệ thống hoặc thiết bị đó
1.1.2 Ưu điểm của việc backup cấu hình
Bảo vệ dữ liệu quan trọng: Backup cấu hình giúp bảo vệ dữ liệu quan trọng và cấuhình của hệ thống khỏi mất mát do sự cố như hỏng ổ cứng, lỗi phần mềm, hoặc tấn côngmáy tính
Khôi phục nhanh chóng: Khi có sự cố, bạn có thể sử dụng các bản sao lưu cấu hình
để khôi phục hệ thống về trạng thái hoạt động bình thường một cách nhanh chóng Điềunày giúp giảm thời gian gián đoạn hoạt động và nguy cơ mất dữ liệu
Giúp xác định lỗi: Bằng cách so sánh cấu hình hiện tại với các bản sao lưu trước đó,bạn có thể dễ dàng xác định được khi nào có sự thay đổi không mong muốn hoặc lỗi cấuhình Điều này giúp bạn tìm ra nguyên nhân của sự cố và khắc phục nó một cách hiệuquả
Đảm bảo tuân thủ và bảo mật: Backup cấu hình giúp đảm bảo rằng các thiết lập vàchính sách bảo mật được duy trì và tuân thủ theo các yêu cầu và tiêu chuẩn của tổ chức
Nó cũng giúp bảo vệ thông tin quan trọng khỏi sự truy cập trái phép
Linh hoạt trong việc di chuyển hoặc sao chép hệ thống: Khi bạn cần di chuyển hoặcsao chép hệ thống sang một nơi khác, backup cấu hình có thể giúp bạn tái tạo cài đặt vàthiết lập một cách dễ dàng và chính xác
Đánh giá và cải thiện hiệu suất: Bằng cách duyệt và so sánh các phiên bản cấu hìnhtrước và sau khi thực hiện thay đổi, bạn có thể đánh giá tác động của các thay đổi đối vớihiệu suất hệ thống và điều chỉnh chúng để cải thiện hoạt động
Dự phòng cho sự cố: Backup cấu hình cũng có thể được sử dụng như một phần của
kế hoạch dự phòng cho các tình huống sự cố lớn, như thảm họa tự nhiên hoặc tấn côngmạng, để đảm bảo rằng bạn có thể khôi phục hệ thống sau khi xảy ra sự cố
1
Trang 81.1.4 Ưu điểm của backup cấu hình tự động
Lịch trình tự động: Hệ thống được cấu hình để thực hiện sao lưu cấu hình theo lịchtrình cụ thể, ví dụ: hàng ngày, hàng tuần, hoặc hàng tháng Điều này đảm bảo rằng bạnluôn có bản sao lưu gần nhất của cấu hình
Ngắt kết nối với yếu tố con người: Backup tự động loại bỏ yếu tố con người trongquá trình sao lưu, giúp loại bỏ sai sót và quên sót thông tin quan trọng
Sự nhất quán và đáng tin cậy: Do được thực hiện tự động, backup cấu hình tự độngthường đảm bảo tính nhất quán và đáng tin cậy hơn so với việc thực hiện thủ công.Khôi phục nhanh chóng: Khi cần, bạn có thể dễ dàng khôi phục cấu hình từ các bảnsao lưu tự động này mà không cần mất thời gian quá nhiều
Bảo mật và quản lý phiên bản: Các hệ thống backup tự động thường được bảo mậttốt và cung cấp quản lý phiên bản, cho phép bạn xem và khôi phục các phiên bản cấuhình trước đó nếu cần
Cảnh báo và thông báo: Hệ thống backup tự động thường cung cấp chức năng cảnhbáo và thông báo khi quá trình sao lưu gặp sự cố hoặc không thành công, giúp bạn có thể
Sao lưu tự động: SolarWinds cho phép bạn cấu hình lịch trình sao lưu tự động chocác thiết bị mạng của bạn Điều này giúp đảm bảo rằng bạn luôn có phiên bản cấu hìnhmới nhất và có thể khôi phục chúng nhanh chóng trong trường hợp cần thiết
2
Trang 9Hỗ trợ đa thiết bị: SolarWinds hỗ trợ sao lưu và khôi phục cấu hình cho nhiều thiết
bị mạng khác nhau, bao gồm router, switch, máy chủ, và các thiết bị khác
Phiên bản lịch sử: Công cụ cho phép bạn lưu trữ nhiều phiên bản của cấu hình thiết
bị, giúp bạn có thể quay lại các phiên bản trước đó nếu cần
Xác minh cấu hình: SolarWinds cung cấp khả năng xác minh tính toàn vẹn của cấuhình sau khi đã được sao lưu Điều này giúp đảm bảo rằng cấu hình không bị thay đổi tráiphép
Báo cáo và cảnh báo: Công cụ cung cấp các báo cáo về quá trình sao lưu cấu hình,cùng với cảnh báo khi có sự thay đổi không mong muốn trong cấu hình
Tích hợp với các giải pháp khác: SolarWinds cung cấp tích hợp với các giải phápquản lý mạng khác, giúp bạn quản lý cấu hình và giám sát mạng một cách toàn diện.Bảo mật dữ liệu: Dữ liệu cấu hình sao lưu thường chứa thông tin quan trọng vànhạy cảm SolarWinds cung cấp các biện pháp bảo mật để đảm bảo rằng dữ liệu nàykhông bị truy cập trái phép
Giao diện dễ sử dụng: SolarWinds thiết kế giao diện người dùng dễ sử dụng, giúpngười quản trị mạng dễ dàng cấu hình và quản lý quy trình sao lưu cấu hình
Rconfig
Rconfig (còn gọi là RANCID Configuration Manager) là một công cụ mã nguồn mởđược sử dụng để sao lưu và quản lý cấu hình thiết bị mạng Đây là một giải pháp phổbiến trong việc quản lý cấu hình thiết bị mạng, đặc biệt là trong môi trường sử dụng thiết
bị Cisco Dưới đây là một số điểm nổi bật và tính năng quan trọng của Rconfig:Sao lưu Cấu hình Tự Động: Rconfig cho phép bạn thiết lập lịch trình tự động để saolưu cấu hình của các thiết bị mạng Điều này giúp đảm bảo rằng bạn luôn có phiên bảncấu hình mới nhất của các thiết bị
Hỗ Trợ Nhiều Loại Thiết Bị: Rconfig không chỉ hỗ trợ các thiết bị Cisco, mà còn hỗtrợ nhiều loại thiết bị mạng khác nhau, bao gồm Juniper, HP, Brocade, và nhiều thiết bịkhác
Lịch Sử Cấu Hình: Công cụ này lưu trữ lịch sử của các phiên bản cấu hình trước đó,giúp bạn dễ dàng so sánh và khôi phục lại các phiên bản cũ nếu cần
Báo Cáo và Cảnh Báo: Rconfig cung cấp khả năng tạo các báo cáo về quá trình saolưu cấu hình và cảnh báo về sự thay đổi không mong muốn trong cấu hình
Bảo Mật Dữ Liệu: Dữ liệu cấu hình sao lưu thường chứa thông tin quan trọng vànhạy cảm Rconfig cung cấp các biện pháp bảo mật để đảm bảo rằng dữ liệu này không
bị truy cập trái phép
Mã Nguồn Mở và Miễn Phí: Rconfig là một phần mềm mã nguồn mở và miễn phí,
có nghĩa bạn có thể sử dụng nó mà không phải trả tiền phí cố định
3
Trang 10 Ansible
Ansible là một công cụ mã nguồn mở mạnh mẽ dùng để tự động hóa quản lý cấuhình hệ thống và triển khai ứng dụng Nó được sử dụng rộng rãi trong lĩnh vực quản lý hệthống, quản lý cấu hình mạng, và tự động hóa các tác vụ quản lý hệ thống Dưới đây làmột số điểm cụ thể về Ansible:
Mô hình Agentless: Ansible hoạt động dựa trên mô hình không cần cài đặt agenttrên các thiết bị mục tiêu Thay vì đòi hỏi cài đặt phần mềm riêng biệt trên mỗi máy chủ,Ansible sử dụng SSH hoặc WinRM (đối với Windows) để tương tác với các máy chủ từxa
Ngôn ngữ YAML: Ansible sử dụng ngôn ngữ YAML (Yet Another MarkupLanguage) để định nghĩa các tác vụ và cấu hình YAML là một ngôn ngữ dễ đọc và viết,giúp người dùng dễ dàng định nghĩa và hiểu các tác vụ tự động hóa
Module và Playbook: Ansible sử dụng "module" để thực hiện các tác vụ cụ thể nhưsao lưu cấu hình, cài đặt phần mềm, hoặc quản lý người dùng Các tác vụ được tổ chứcthành "playbooks," đóng gói các nhiệm vụ liên quan lại với nhau để tạo ra các kịch bản tựđộng hóa
Mạng thiết bị hỗ trợ: Ansible hỗ trợ quản lý cấu hình của nhiều loại thiết bị mạngkhác nhau, bao gồm Cisco, Juniper, Arista, và nhiều hãng khác Ansible NetworkAutomation (còn gọi là Ansible Networking) là một phần mở rộng của Ansible chuyên vềquản lý cấu hình mạng
Cộng đồng lớn và Ecosystem: Ansible có một cộng đồng sôi động và phong phú,cung cấp nhiều tài liệu, ví dụ, và module mở rộng Nó được tích hợp với các công cụ vàgiải pháp khác nhau như Docker, Kubernetes, AWS, Azure, VMware, và nhiều nền tảngkhác
Tích hợp CI/CD: Ansible có khả năng tích hợp vào các quy trình CI/CD(Continuous Integration/Continuous Deployment) để tự động hóa triển khai ứng dụng vàquản lý cấu hình trong môi trường phát triển và sản xuất
Khả năng mở rộng: Ansible cho phép bạn tự tạo module tùy chỉnh và mở rộng khảnăng của nó theo yêu cầu cụ thể của tổ chức của bạn
Python
Python là một ngôn ngữ lập trình mạnh mẽ và linh hoạt, được sử dụng rộng rãitrong nhiều lĩnh vực khác nhau, bao gồm cả quản lý và sao lưu cấu hình thiết bị mạng.Việc sử dụng Python để thực hiện các nhiệm vụ sao lưu cấu hình có nhiều ưu điểm, giúptăng cường tính linh hoạt, tự động hóa và hiệu quả của quá trình này
4
Trang 11CHƯƠNG 2 GIỚI THIỆU VỀ NGÔN NGỮ PYTHON VÀ MỘT SỐ THƯ VIỆN HỖ TRỢ BACKUP CẤU HÌNH
2.1.2 Lịch sử hình thành
Python là một ngôn ngữ lập trình được tạo ra bởi Guido van Rossum, một nhànghiên cứu người Hà Lan Ngôn ngữ này có nguồn gốc từ một dự án tên là ABC, mộtngôn ngữ lập trình khác mà Guido van Rossum đã tham gia phát triển
Sự hình thành chính thức của Python bắt đầu vào tháng 12 năm 1989 khi Guido vanRossum đang làm việc tại Trung tâm Nghiên cứu Mathematisch Centrum ở Amsterdam.Ông bắt đầu xây dựng Python như một dự án tình nguyện cá nhân, nhằm mục tiêu tạo ramột ngôn ngữ lập trình dễ đọc, linh hoạt và mạnh mẽ
Ngày 20 tháng 2 năm 1991, phiên bản đầu tiên của Python (phiên bản 0.9.0) đãđược công bố trên Usenet Sự phổ biến của Python tăng lên khi nó được giới thiệu chocộng đồng lập trình và các nhà phát triển
Phiên bản đầu tiên chính thức, Python 1.0, được phát hành vào ngày 26 tháng 1 năm
1994 Python 2.0 được giới thiệu vào năm 2000, đồng thời mang lại nhiều cải tiến và tínhnăng mới
Sự ra đời của Python 3.0 (hay Python 3000 hoặc "Py3k") vào ngày 3 tháng 12 năm
2008 đánh dấu một bước ngoặt quan trọng Python 3.0 thiết lập sự tách biệt với các phiênbản trước, với nhiều cải tiến và thay đổi để làm cho ngôn ngữ trở nên sạch sẽ hơn, hiệuquả hơn và dễ duy trì hơn
Tính đến thời điểm kiến thức của tôi được cập nhật lần cuối vào tháng 1 năm 2022,Python tiếp tục là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới, được
5
Trang 12sử dụng rộng rãi trong nhiều lĩnh vực như phân tích dữ liệu, trí tuệ nhân tạo, phát triểnweb, và nhiều ứng dụng khác.
2.1.3 Những lợi ích mà Python mang lại
- Các nhà phát triển có thể dễ dàng đọc và hiểu một chương trình Python vì ngônngữ này có cú pháp cơ bản giống tiếng Anh
- Python giúp cải thiện năng suất làm việc của các nhà phát triển vì so với nhữngngôn ngữ khác, họ có thể sử dụng ít dòng mã hơn để viết một chương trình Python
- Python có một thư viện tiêu chuẩn lớn, chứa nhiều dòng mã có thể tái sử dụng chohầu hết mọi tác vụ Nhờ đó, các nhà phát triển sẽ không cần phải viết mã từ đầu
- Các nhà phát triển có thể dễ dàng sử dụng Python với các ngôn ngữ lập trình phổbiến khác như Java, C và C++
- Cộng đồng Python tích cực hoạt động bao gồm hàng triệu nhà phát triển nhiệt tình
hỗ trợ trên toàn thế giới Nếu gặp phải vấn đề, bạn sẽ có thể nhận được sự hỗ trợ nhanhchóng từ cộng đồng
- Trên Internet có rất nhiều tài nguyên hữu ích nếu bạn muốn học Python Ví dụ:bạn có thể dễ dàng tìm thấy video, chỉ dẫn, tài liệu và hướng dẫn dành cho nhà phát triển
- Python có thể được sử dụng trên nhiều hệ điều hành máy tính khác nhau, chẳnghạn như Windows, macOS, Linux và Unix
2.1.4 Những ứng dụng của Python
Phát triển web phía máy chủ
Phát triển web phía máy chủ bao gồm những hàm backend phức tạp mà các trangweb thực hiện để hiển thị thông tin cho người dùng.Python hữu ích trong việc lập trình
mã phía máy chủ bởi vì ngôn ngữ này cung cấp nhiều thư viện bao gồm mã viết sẵn chocác hàm backend phức tạp Các nhà phát triển cũng sử dụng một loạt các khung Pythoncung cấp tất cả những công cụ cần thiết để xây dựng ứng dụng web một cách nhanhchóng và dễ dàng hơn Ví dụ: các nhà phát triển có thể tạo ứng dụng web khung trongnháy mắt bởi vì họ không cần phải lập trình nó từ đầu Sau đó, họ có thể kiểm tra ứngdụng web này bằng cách sử dụng các công cụ kiểm thử của khung, mà không cần phụthuộc vào những công cụ kiểm thử bên ngoài
Tự động hóa bằng các tập lệnh Python
- Đổi tên một số lượng lớn tệp cùng lúc
- Chuyển đổi một tệp sang một loại tệp khác
- Loại bỏ các từ trùng lặp trong tệp văn bản
- Thực hiện các phép tính toán cơ bản
- Gửi email
6
Trang 13- Tải xuống nội dung
- Thực hiện phân tích nhật ký cơ bản
- Tìm kiếm lỗi trong nhiều tệp
Phát triển phần mềm
- Theo dõi lỗi trong mã của phần mềm
- Tự động xây dựng phần mềm
- Đảm nhận quản lý dự án phần mềm
- Phát triển nguyên mẫu phần mềm
- Phát triển các ứng dụng máy tính bằng cách sử dụng những thư viện Giao diện đồhọa người dùng (GUI)
- Phát triển từ các trò chơi văn bản đơn giản cho đến những trò chơi điện tử phứctạp
Tự động hóa kiểm thử phần mềm
Các nhà phát triển sử dụng khung kiểm thử đơn vị Python, chẳng hạn như Unittest,Robot và PyUnit, để kiểm thử các hàm do họ viết.Các kỹ sư kiểm thử phần mềm sử dụngPython để viết các trường hợp kiểm thử cho nhiều tình huống khác nhau Ví dụ: họ sửdụng ngôn ngữ này để kiểm thử giao diện người dùng của một ứng dụng web, nhiềuthành phần của phần mềm và những tính năng mới
2.2 Một số thư viện hỗ trợ backup cấu hình mạng
Thư viện Netmiko
Thư viện Netmiko là một thư viện mã nguồn mở được viết bằng Python để tự độnghóa và quản lý thiết bị mạng Nó được phát triển dựa trên thư viện Paramiko và PySSH,
và được sử dụng rộng rãi trong lĩnh vực quản lý hệ thống mạng, đặc biệt là thiết bị mạngCisco Netmiko cung cấp một giao diện dễ sử dụng để kết nối, cấu hình và tương tác vớicác thiết bị mạng từ xa
Hỗ trợ nhiều thiết bị: Netmiko hỗ trợ nhiều loại thiết bị mạng khác nhau, bao gồmCisco, Juniper, Arista, HP, và nhiều nhà sản xuất khác Bạn có thể sử dụng chung một mãnguồn để tương tác với các thiết bị này
Kết nối SSH và Telnet: Netmiko hỗ trợ cả kết nối SSH và Telnet đến các thiết bịmạng, cho phép bạn quản lý các thiết bị không hỗ trợ SSH
Quản lý thiết bị từ xa: Bạn có thể thực hiện các tác vụ như kết nối đến thiết bị, thựchiện lệnh, tải lên và tải xuống tệp, và cấu hình các thiết bị mạng từ xa
Hỗ trợ cho việc cấu hình lặp đi lặp lại: Netmiko cho phép bạn tạo và thực hiện cáctác vụ cấu hình lặp đi lặp lại trên nhiều thiết bị mạng một cách dễ dàng
7