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.

Announcement

Collapse
No announcement yet.

Viết chương trình sử dụng thư viện Netmiko của Python để cấu hình các thiết bị mạng

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Viết chương trình sử dụng thư viện Netmiko của Python để cấu hình các thiết bị mạng

    📌 Bài viết này đặc biệt phù hợp với các kỹ sư mạng, quản trị viên hệ thống và những ai đang tìm hiểu về tự động hóa mạng. Nếu bạn đang làm việc với thiết bị Cisco hoặc cần triển khai hệ thống tự động hóa cấu hình, đây sẽ là một tài liệu hữu ích dành cho bạn!

    Viết chương trình sử dụng thư viện Netmiko của Python để cấu hình các thiết bị mạng

    1. Giới thiệu

    Trong lĩnh vực quản trị mạng, việc tự động hóa cấu hình thiết bị là một yếu tố quan trọng giúp tối ưu hóa hiệu suất và đảm bảo tính ổn định của hệ thống. Netmiko, một thư viện Python mạnh mẽ, giúp các kỹ sư mạng, quản trị viên hệ thống và những người quan tâm đến tự động hóa mạng dễ dàng kết nối và thực hiện cấu hình thiết bị qua giao thức SSH.

    Vào tháng 3/2025, VnPro đã thực hiện và chạy thử thành công chương trình sử dụng Netmiko để tự động hóa cấu hình trên thiết bị Cisco Switch. Trong bài viết này, chúng tôi sẽ hướng dẫn chi tiết cách sử dụng Netmiko để kết nối SSH, tạo VLAN, đặt địa chỉ IP và kiểm tra cấu hình trên Switch.

    Bài viết này đặc biệt hữu ích cho:
    Kỹ sư mạng đang làm việc với thiết bị Cisco.
    Quản trị viên hệ thống cần tự động hóa quản lý mạng.
    Những ai quan tâm đến Network Automation bằng Python.

    2. Mô hình Lab

    2.1. Mô tả mô hình
    Click image for larger version

Name:	Screenshot 2025-03-28 143140.png
Views:	6
Size:	27.9 KB
ID:	429408
    • Mô hình gồm một Switch và một PC kết nối với nhau.
    • Máy tính cần có Python và thư viện Netmiko được cài đặt.
    • Chương trình Python sẽ kết nối SSH đến Switch để thực hiện cấu hình.
    2.2. Yêu cầu kỹ thuật
    • Cấu hình cơ bản trên Switch:
      • Đặt hostname, password console, địa chỉ IP.
      • Kích hoạt SSH.
    • Cài đặt Netmiko trên máy tính.
    • Viết chương trình Python để thực hiện:
      • Kết nối SSH đến Switch.
      • Tạo VLAN từ 10 đến 30.
      • Đặt địa chỉ IP cho interface VLAN.
      • Kiểm tra kết quả cấu hình.
    3. Các bước thực hiện

    3.1. Cài đặt thư viện Netmiko

    Mở cmd và nhập các lệnh sau:
    python -m pip install --upgrade pip
    pip install netmiko --user


    Lưu ý: Nếu bạn sử dụng Python 3, có thể dùng lệnh: pip3 install netmiko --user

    3.2. Cấu hình SSH trên Switch

    - Đặt IP interface vlan 1
    Switch#configure terminal
    Switch(config)#interface vlan 1
    Switch(config-if)#ip address 192.168.1.1 255.255.255.0
    Switch(config-if)#no shutdown

    - Trên thiết bị Cisco Switch, thực hiện cấu hình cho phép truy cập SSH:
    Switch#configure terminal
    Switch(config)#username vnpro password vnpro#123
    Switch(config)#ip domain-name 192.168.1.1
    Switch(config)#enable password vnpro#321
    Switch(config)#line vty 0 4
    Switch(config-line)#password cisco
    Switch(config-line)#login
    Switch(config-line)#exit
    Switch(config)#crypto key generate rsa
    1024
    Switch(config)#ip ssh version 2

    3.3. Viết chương trình Python sử dụng Netmiko

    - Mình sẽ dùng phần mềm Vscode, tạo new file python_netmiko.py.
    Đầu tiên, từ thư viên Netmiko import ConnectHandler và khai báo thông tin Switch dưới dạng từ điển.
    # import hàm ConnectHandler từ thư viên netmiko
    from netmiko import ConnectHandler

    # Tạo Dict SW bao gồm các thuộc tính như sau
    SW2 = {
    'device_type': 'cisco_ios', # Loại thiết bị
    'ip':'192.168.1.1', # Địa chỉ IP
    'username': 'vnpro', # Tên đăng nhập
    'password': 'vnpro#123', # Mật khẩu
    'secret':'vnpro#321' # Mật khẩu enable
    }

    - Tiếp theo, truyền từ điển SW2 vào hàm ConnectHandler và vào mode enable (Vì SW2 có dạng là từ điển nên chúng ta cần truyền vào hàm ConnectHandler dưới dạng **SW2.)
    # Kết nối SSH đến Switch
    net_connect = ConnectHandler(**SW2)
    net_connect.enable()

    - Tiếp theo, mình tạo vòng lặp for để tạo Vlan từ 10-30:
    for n in range(10,31):
    taoVLAN = ['vlan' + str(n)]
    ipVlan = ['int vlan' + str(n), 'ip add 172.16.' +str(n) + '.1 255.255.255.0', 'no shutdown']
    net_connect.send_config_set(taoVLAN)
    net_connect.send_config_set(ipVlan)​

    * Giải thích code:
    • Chúng ta sẽ tạo ra 1 mảng taoVlAN=[‘vlan ‘ + str(n)] trong đó n di chuyển từ 10-30
    • Để đặt IP cho interface Vlan ta sử dụng câu lệnh:
      • interface vlan 10
      • ip add 172.16.10.1 255.255.255.0
      • no shutdown
      • Interface vlan 30
      • ip add 172.16.30.1 255.255.255.0
      • no shutdown
    • Mình sẽ tạo 1 mảng ipVlan=['int vlan '+str(n),'ip add 172.16.'+str(n)+'.1 255.255.255.0','no shutdown']. Trong đó n chạy từ 10-30.
    • Sau đó, gửi 2 mảng taoVLAN và ipVlan bằng send_config_set, in kết quả ra màn hình.
    • Để kiểm tra kết quả trên switch ta dùng câu lệnh “sh ip int br | i Vlan” để truyền câu lệnh đó đến Switch ta dùng send_config_command (‘sh ip int brief | i Vlan’)
    3.4. Chạy chương trình và kiểm tra kết quả

    - Chạy chương trình bằng lệnh:
    python python_netmiko.py​

    - Sau khi chạy xong, kiểm tra VLAN trên Switch:
    Switch# show ip int brief | include Vlan
    Kết quả mong đợi: VLANs từ 10-30 được tạo tự động với địa chỉ IP tương ứng.

    ​​
    4. Kết luận

    Bằng cách sử dụng Netmiko, chúng ta có thể tự động hóa việc cấu hình thiết bị mạng một cách nhanh chóng và chính xác. Việc này không chỉ giúp tiết kiệm thời gian mà còn giảm thiểu rủi ro do lỗi cấu hình thủ công. Đây là một bước tiến quan trọng đối với các kỹ sư mạng trong thời đại Tự động hóa mạng (Network Automation).

    Bạn đã thử cách này chưa? Hãy chia sẻ trải nghiệm của bạn dưới phần bình luận! 🚀


    ✍️Nguyễn Hùng Vĩ | PKT - VnPro​
    Email : vnpro@vnpro.org
    ---------------------------------------------------------------------------------------------------------------
    Trung Tâm Tin Học VnPro
    149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
    Tel : (08) 35124257 (5 lines)
    Fax: (08) 35124314

    Home page: http://www.vnpro.vn
    Support Forum: http://www.vnpro.org
    - Chuyên đào tạo quản trị mạng và hạ tầng Internet
    - Phát hành sách chuyên môn
    - Tư vấn và tuyển dụng nhân sự IT
    - Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

    Network channel: http://www.dancisco.com
    Blog: http://www.vnpro.org/blog
Working...
X