Lập trình Network Automation with Python

ngày 26-08-2019

  • Bạn muốn tạo một loạt các tài khoản email, tài khoản người dùng và thiết lập các thông số cho các tài khoản này một cách tự động
  • Bạn muốn xóa hoặc di chuyển hàng ngàn tập tin, thư mục một cách nhanh chóng
  • Bạn muốn tự động điền vào các mẫu đăng ký thông tin mà không cần nhập từ bàn phím
  • Bạn muốn tự động tải tập tin hoặc trích xuất nội dung từ trang web khi nó được cập nhật
  • Bạn muốn cấu hình, quản trị nhiều thiết bị mạng cùng lúc và không muốn sai sót trong quá trình thực hiện
  • Bạn muốn cài đặt và cấu hình dịch vụ mạng với việc chỉ với một vài bước thực hiện
  • Bạn đã chán những công việc quản trị được thực hiện lập lại hàng ngày
Nếu bạn gặp một trong những vấn đề trên thì lập trình Network Automation là giải pháp cho bạn.
 

Lập trình Network Automation là gì? 

 
Lập trình Network Automation sẽ giúp cho bạn tự động thực hiện các công việc hàng ngày và không gây sự nhàm chán. Ngoài ra, nó cũng giúp cho việc thực hiện các công việc quản trị được nhanh hơn, hiệu quả hơn mà lại ít sai sót hơn. Bạn chỉ cần lên kịch bản chi tiết các công việc cần thực hiện và kiểm tra kỹ trước khi áp dụng là bạn hoàn toàn có thể lập trình Network Automation, thực hiện tự động mà các sai sót đáng tiếc có thể làm mất dữ liệu và thông tin sẽ không xảy ra. Đặc biệt, lập trình Network Automation sẽ giúp cho các công việc giống nhau được thực hiện một cách nhanh chóng bằng cách sử dụng lại các kịch bản đã được lên và thực thi trước đó.
 
Network Automation with Python
 

Xây dựng kịch bản cho Network Automation

 
Để lên các kịch bản sử dụng cho Automation, chúng ta có thể sử dụng các ngôn ngữ chuyên dùng cho viết kịch bản như powershell, bash hoặc các ngôn ngữ lập trình cấp cao c++, perl, python,… Trong đó, Python là một ngôn ngữ rất phù hợp cho việc xây dựng các kịch bản cho Automation. Vì Python là ngôn ngữ lập trình:
  • Dễ học, dễ tiếp cập
  • Nhiều thư viện mã nguồn mở, miễn phí và được cập nhật thường xuyên
  • Phát triển nhanh
  • Cộng đồng sử dụng và hỗ trợ rộng lớn
  • Ứng dụng trong nhiều lĩnh vực:
    • Phát triển ứng dụng web, windows form
    • Kiểm thử phần mềm
    • Data science
    • Machine learning
    • Deep learning
    • Kiểm thử an toàn mạng (penetration testing)
    • Ứng dụng trong các thiết bị IoT
    • Các ứng dụng cho thiết bị giải trí: android tv box
    • Phát triển các gói ứng dụng cho phép tích hợp chức năng cho các ứng dụng khác: nagios, zabbix,… 
Python cung cấp các phương thức kết nối và cấu hình các thiết bị và dịch vụ mạng thông qua telnet, ssh và các thư viện chuyên dùng cho việc xây dựng các kịch bản automation như: paramiko, netmiko, napalm,…
 
Network Automation with Python
 

Triển khai Lập trình Network Automation – Một số tình huống có thể áp dụng

 
Để quản trị các thiết bị mạng, các dịch vụ và các tài nguyên mạng, thông thường người quản trị sẽ thực hiện các bước như sau:
  1. Kết nối trực tiếp với thiết bị thông qua cổng console, telnet hoặc ssh
  2. Từng bước thao tác, thực hiện cấu hình các thiết bị, dịch vụ và tài nguyên mạng
  3. Lặp lại việc cấu hình cho nhiều thiết bị để đáp ứng yêu cầu thực tế.
Các công việc này phải thực hiện lặp đi lặp lại nhiều lần nên dễ gây cảm giác nhàm chán và thậm chí có thể dẫn đến sai sót, làm cho người quản trị phải mất nhiều thời gian để tìm kiếm và khắc phục. Để tránh những sai sót và giảm thời gian thực hiện các công việc cấu hình và quản trị thiết bị, người quản trị có thể xây dựng các kịch bản Network Automation để thực hiện các công việc một cách tự động theo các bước sau : 
  1. Xây dựng script cấu hình tự động cho thiết bị
  2. Thực thi script để cấu hình cho thiết bị
  3. Kiểm tra kết quả, nếu cần sẽ điều chỉnh script, thực thi cấu hình lại

 

Minh họa quá trình sao lưu cấu hình thiết bị Cisco

Vậy là bạn đã cấu hình cho thiết bị xong, bây giờ bạn chỉ việc sao chép, chỉnh lại thông số phù hợp cho các thiết bị khác, rất nhanh và hiệu quả. Bạn hoàn toàn có thể thực hiện tự động hoàn toàn việc cấu hình hàng trăm thiết bị nếu bạn lưu lại các thông tin thiết bị trên tập tin cấu hình, rất nhanh chóng và chuyên nghiệp. 
 
Bạn có thể thấy, việc thực hiện lập trình Network Automation đòi hỏi người quản trị phải thật sự am tường kỹ thuật, hiểu rõ các lệnh thao tác và ý nghĩa các tham số cũng như phải có kỹ năng lập trình để có thể chuyển các yêu cầu mình đã thực hiện bằng tay bằng các lệnh tương ứng. Bạn sẽ hơi lúng túng trong lần đầu nhưng những lần sau thì công việc quản trị sẽ nhẹ nhàng hơn, tất cả đều được tự động và chính xác hoàn toàn. Ngoài ra, với việc ứng dụng automation vào công việc quản trị, người quản trị có thể xây dựng sẵn các kịch bản để tự động thực hiện một số công việc khi có sự cố xảy ra như dịch vụ bị lỗi, bị quá tải hay bị tấn công. Chuyên viên quản trị cũng có thể thiết lập các thông số khi dịch vụ, thiết bị đạt đến ngưỡng giới hạn sẽ gửi cảnh báo để người quản trị nắm được tình hình có những điều chỉnh cho phù hợp. Việc này sẽ đảm bảo được sự ổn định và giảm thiểu tối đa thời gian ngưng hoạt động của hệ thống do lỗi gây ra.
Việc xây dựng các kịch bản automation cũng có thể áp dụng cho các thao tác quản trị trên các hệ thống dịch vụ trên nền hệ điều hành Windows và Linux theo các bước sau: 
  • Xây dựng script
  • Thực thi script để thực thi tác vụ cài đặt phần mềm, cấu hình phần mềm, giám sát tài nguyên, tác vụ quản trị tài nguyên, người dùng,…
  • Lập lịch thực thi tự động
  • Thiết lập cảnh báo
Như vậy, chúng ta có thể thấy được nếu với chuyên môn kỹ thuật đã có và kiến thức lập trình Python nền tảng, bạn hoàn toàn có thể lập trình Network Automation, xây dựng các kịch bản dùng cho quản trị các thiết bị mạng như Cisco, Jupiter, Arista,… và quản trị các dịch vụ trong hệ thống mạng trên nền Windows và Linux một cách tự động hoàn toàn, giúp cho công việc quản trị ngày càng hiệu quả và chuyên nghiệp hơn.
 
Trung tâm Tin học ĐH Khoa học Tự nhiên
 
ai
Trung Tâm Tin Học
ai
Trung Tâm Tin Học
Chào mừng bạn đến với Trung Tâm Tin Học.
Bạn đang cần hỗ trợ thông tin gì ạ? Hãy Chat ngay với chúng tôi nhé.