Python snmpwalk

Giao thức SNMP (Giao thức quản lý mạng đơn giản) được sử dụng trong các hệ thống quản lý mạng để liên lạc giữa máy chủ và thiết bị từ xa. Máy chủ được gọi là người quản lý và thiết bị từ xa được gọi là tác nhân

Tác nhân trong MIB tạo tất cả thông tin mà người quản lý có thể đọc và kiểm soát. MIB là một cấu trúc bảng tương tự như một cái cây với các số đại diện cho tất cả các nút

Giao thức này không được triển khai nguyên bản bởi Python. Trong Python, chúng tôi sử dụng mô-đun netsnmp, một mô-đun nguồn mở cung cấp các công cụ khác nhau để mô phỏng các tiện ích SNMP khác nhau

Hướng dẫn này sẽ minh họa mô-đun netsnmp của Python cho tiện ích snmpwalk

Triển khai Tiện ích snmpwalk bằng Python

Chúng tôi có thể truy xuất dữ liệu quản lý SNMP bằng các yêu cầu SNMP GETNEXT. snmpwalk sử dụng các yêu cầu GETNEXT này để truy xuất các giá trị từ hệ thống phân cấp MIB

Với ứng dụng snmpwalk, chúng tôi chạy nhiều yêu cầu để nhận các giá trị từ toàn bộ hệ thống phân cấp MIB cùng một lúc

Để triển khai trong Python, chúng ta có thể sử dụng hàm netsnmp.snmpwalk() để mô phỏng tiện ích snmpwalk. Nó chấp nhận một VarList hoặc netsnmp0 mà từ đó snmpwalk sẽ bắt đầu

Nó trả về các giá trị từ MIB trong một tuple. Nên vượt qua một VarList thay vì một netsnmp0 bởi vì một VarList được cập nhật liên tục cho đến khi nó chứa một bộ hoàn chỉnh của netsnmp0 cho kết quả

Nếu _______1_______0 được thông qua, thì không thể kiểm tra các OID được trả lại

Như được hiển thị bên dưới, chúng tôi sẽ sử dụng chức năng này để mô phỏng snmpwalk trong Python

import netsnmp
server = "172.xx.x.x"
password = "snmp_private"

oids_varlist = netsnmp.VarList('IF-MIB::ifName','IF-MIB::ifDescr')
result = netsnmp.snmpwalk(oids_varlist, Version=2, DestHost=server, Community=password)

Trong ví dụ trên, chúng ta tạo một VarList bằng cách sử dụng hàm tạo netsnmp9. Điều này được thông qua với các chi tiết máy chủ và mật khẩu của người quản lý trong netsnmp.snmpwalk() để lấy thông tin mạng