Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bài 2/4: Python cho Kỹ sư Mạng: Dữ liệu, Hàm, Câu lệnh Điều kiện và Vòng lặp

    🐍 Giới thiệu về Python cho Kỹ sư Mạng: Dữ liệu, Hàm, Câu lệnh Điều kiện và Vòng lặp


    Python là một ngôn ngữ lập trình cực kỳ phổ biến trong lĩnh vực tự động hóa mạng. Nhưng trước khi có thể dùng Python để cấu hình router hoặc trích xuất dữ liệu từ các thiết bị mạng, bạn cần nắm vững nền tảng của nó – đặc biệt là các kiểu dữ liệu (data types), câu lệnh điều kiện (if/else), vòng lặp (for/while)hàm (functions).
    📦 1. Kiểu dữ liệu trong Python: Primitive vs Non-Primitive

    📌 Kiểu dữ liệu nguyên thủy (Primitive)


    Dùng để lưu trữ các giá trị đơn:
    • Integer (số nguyên): ssh_timeout = 30
    • Float (số thực): ios_version = 15.8
    • String (chuỗi): leaf_switch = "Nexus 9300"
    • Boolean (đúng/sai): code_upgraded = True
    📌 Kiểu dữ liệu không nguyên thủy (Non-Primitive)


    Dùng để tổ chức dữ liệu phức tạp hơn – có thể chứa nhiều giá trị primitive bên trong:
    • List (danh sách): devices = ["ASA", "NEXUS", "CATALYST"]
    • Tuple (bộ giá trị): ip_addr = ("10.254.0.1", "10.254.0.2") (không thể sửa giá trị)
    • Dictionary (từ điển): if_state = {"Gi0/1": "shutdown", "Gi0/2": "no shutdown"}
    • Set (tập hợp không trùng lặp): if_names = {"Gi0/1", "Gi0/2", "Gi0/1"} → Python sẽ loại bỏ trùng lặp!

    🎯 Ví dụ thực tế:

    interfaces = ["Gi0/1", "Gi0/2", "Gi0/3", "Gi0/1"] print(set(interfaces)) # Kết quả: {'Gi0/1', 'Gi0/2', 'Gi0/3'}
    🔁 2. Vòng lặp trong Python


    Khi làm việc với hàng trăm thiết bị mạng, bạn cần duyệt qua danh sách để thực hiện hành động lặp lại như kiểm tra trạng thái, cấu hình interface...
    • for loop: lặp qua từng phần tử trong danh sách.

    for device in devices: print(f"Đang kiểm tra {device}")
    • while loop: lặp đến khi điều kiện sai.
    counter = 0 while counter < 3: print(devices[counter]) counter += 1
    🔀 3. Câu lệnh điều kiện if, elif, else


    Sử dụng để kiểm tra điều kiện và thực thi hành động tùy theo kết quả.

    device_type = "NEXUS" if device_type == "ASA": print("Firewall detected") elif device_type == "NEXUS": print("Data Center switch detected") else: print("Unknown device")
    🔧 4. Hàm trong Python


    Hàm giúp bạn tái sử dụng đoạn mã, dễ bảo trì hơn khi làm automation cho hàng loạt thiết bị.

    def show_device_type(device_name): print(f"Device {device_name} is being verified") show_device_type("NEXUS 9300")



    Bạn cũng có thể sử dụng các hàm có sẵn trong Python như dir() để liệt kê các phương thức, hoặc help() để xem mô tả cách sử dụng.

    vendor = "Cisco" print(dir(vendor)) # Liệt kê các hàm như upper(), lower(), split(), ... print(vendor.upper()) # In ra: CISCO
    🔁 5. Chuyển đổi giữa các kiểu dữ liệu


    Một trong những điều thú vị khi học Python là khả năng chuyển đổi giữa các kiểu dữ liệu.


    float("3.14") # → 3.14 bool(0) # → False int(True) # → 1 # Chuyển list → set → loại trùng lặp devices = ["ASA", "NEXUS", "CATALYST", "ASA"] print(set(devices)) # → {'ASA', 'NEXUS', 'CATALYST'}



    🎯 Lưu ý: Không phải lúc nào bạn cũng có thể chuyển đổi. Ví dụ: không thể chuyển list sang dictionary nếu không theo đúng định dạng cặp key-value.


    dict(["NEXUS", "ASA"]) # ❌ sẽ báo lỗi vì không đúng định dạng key-value
    🧠 Tổng kết cho kỹ sư mạng
    • Biết cách dùng kiểu dữ liệu phù hợp giúp bạn tổ chức thông tin cấu hình và trạng thái thiết bị dễ dàng hơn.
    • Vòng lặpcâu lệnh điều kiện là chìa khóa để tự động hóa tác vụ lặp đi lặp lại.
    • Hàm giúp mã dễ đọc, dễ bảo trì – đặc biệt khi dùng với các framework như Ansible hoặc Netmiko.
    • Làm chủ các thao tác với list, dict, set giúp bạn kiểm soát dữ liệu đầu vào và đầu ra từ các thiết bị mạng.


    👉 Bạn muốn tiếp tục? Hãy theo dõi các bài tiếp theo trong series:
    • Tự động hóa cấu hình interface với Netmiko
    • Gửi lệnh show và phân tích kết quả bằng Python
    • Xây dựng công cụ kiểm tra trạng thái mạng với vòng lặp

    📌 Đừng quên chia sẻ bài viết nếu bạn thấy hữu ích!
    #Python4NetOps #NetworkAutomation #VnProNetCenter cisco devnet #Tự_động_hóa_mạng #Python_Cơ_Bản


    Attached Files
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X