Tạo danh sách các mạng con trên switch bằng SNMP?


9

Có ai quen thuộc với cách tiếp cận để tạo danh sách các mạng con trên một công tắc cụ thể (hãy chọn một mạng phổ biến hơn - Cisco) bằng SNMP không? Làm thế nào về một danh sách các Vlan? Nếu vậy, bạn có thể chỉ cho tôi các MIB / OID liên quan không? (mạng người mới ở đây)

Câu trả lời:


8

Giao diện / Địa chỉ IP:

Nếu bạn đang muốn thăm dò địa chỉ IP của thiết bị, mặt nạ mạng con và giao diện tương ứng, bạn có thể sử dụng các OID sau từ IP-MIBIF-MIB MIB :

  • .1.3.6.1.2.1.4.20.1.1 - Địa chỉ IP có thể được tìm thấy tại OID này

    ~]$ snmptranslate .1.3.6.1.2.1.4.20.1.1
    IP-MIB::ipAdEntAddr
    
    ~]$ snmpwalk -v2c -c cisco 10.30.46.1 .1.3.6.1.2.1.4.20.1.1
    IP-MIB::ipAdEntAddr.10.30.46.1 = IpAddress: 10.30.46.1
    IP-MIB::ipAdEntAddr.25.255.25.254 = IpAddress: 25.255.25.254
    IP-MIB::ipAdEntAddr.55.44.33.22 = IpAddress: 55.44.33.22
    IP-MIB::ipAdEntAddr.172.31.10.10 = IpAddress: 172.31.10.10
    


  • .1.3.6.1.2.1.4.20.1.3 - mía mặt nạ mạng con được tìm thấy tại OID này

    ~]$ snmptranslate .1.3.6.1.2.1.4.20.1.3
    IP-MIB::ipAdEntNetMask
    
    ~]$ snmpwalk -v2c -c cisco 10.30.46.1 .1.3.6.1.2.1.4.20.1.3
    IP-MIB::ipAdEntNetMask.10.30.46.1 = IpAddress: 255.255.255.0
    IP-MIB::ipAdEntNetMask.25.255.25.254 = IpAddress: 255.255.255.0
    IP-MIB::ipAdEntNetMask.55.44.33.22 = IpAddress: 255.255.255.0
    IP-MIB::ipAdEntNetMask.172.31.10.10 = IpAddress: 255.255.255.0
    


  • .1.3.6.1.2.1.4.20.1.2- Chỉ mục giao diện ( Chỉ mục ifTable ) là các số nguyên duy nhất cho mỗi giao diện.

    ~]$ snmptranslate .1.3.6.1.2.1.4.20.1.2
    IP-MIB::ipAdEntIfIndex
    
    ~]$ snmpwalk -v2c -c cisco 10.30.46.1 .1.3.6.1.2.1.4.20.1.2
    IP-MIB::ipAdEntIfIndex.10.30.46.1 = INTEGER: 1
    IP-MIB::ipAdEntIfIndex.25.255.25.254 = INTEGER: 5
    IP-MIB::ipAdEntIfIndex.55.44.33.22 = INTEGER: 6
    IP-MIB::ipAdEntIfIndex.172.31.10.10 = INTEGER: 7
    


  • .1.3.6.1.2.1.2.2.1.2- Tên thân thiện với giao diện có thể được tìm thấy tại OID này và chỉ mục ifTable được thêm vào (ví dụ ...2.1.2.[INDEX]:) cho mỗi giao diện.

    ~]$ snmptranslate .1.3.6.1.2.1.2.2.1.2
    IF-MIB::ifDescr
    
    ~]$ snmpwalk -v2c -c cisco 10.30.46.1 .1.3.6.1.2.1.2.2.1.2
    IF-MIB::ifDescr.1 = STRING: FastEthernet0/0
    IF-MIB::ifDescr.2 = STRING: FastEthernet0/1
    IF-MIB::ifDescr.4 = STRING: Null0
    IF-MIB::ifDescr.5 = STRING: Loopback0
    IF-MIB::ifDescr.6 = STRING: Tunnel10
    IF-MIB::ifDescr.7 = STRING: Dialer1
    IF-MIB::ifDescr.8 = STRING: Virtual-Access1
    

Bạn có thể thực hiện các OID này theo cách thủ công, viết kịch bản bằng ngôn ngữ bạn chọn hoặc sử dụng các chương trình / tập lệnh thông minh hơn nhiều tương tự như những gì được đề cập trong câu trả lời của Tim Peck.

Đây là một ví dụ shell nhanh (và bẩn):

#!/bin/bash
# duct taped by one.time
# Basic interface information collector

##
# Set usage var and getoptions
usage="Usage: interface-info.sh -H <IP Address> -C <snmp community string>

OPTIONS:
  -H Hostname          set IP address or hostname
  -h Help              prints usage options

SNMPv2 OPTIONS:
  -C Community         set SNMPv2 community string
"

while getopts H:C:h option;
do
        case $option in
                H) ipaddress=$OPTARG;;
                C) community=$OPTARG;;
                h) echo "$usage"
                exit $invalid_result;;
        esac
done

##
# Prevent blank argvars
if [[ -z $ipaddress || -z $community ]]; then
  echo "$usage"
  exit 0
fi

## 
# Set field separator to new line
IFS=$'\n'

##
# Store our IP-MIB info in arrays
ipAdEntAddr=( $(snmpbulkwalk -v2c -c $community  $ipaddress .1.3.6.1.2.1.4.20.1.1 | awk -F ": " '{print $2}') )
ipAdEntNetMask=( $(snmpbulkwalk -v2c -c $community $ipaddress .1.3.6.1.2.1.4.20.1.3 | awk -F ": " '{print $2}') )
ipAdEntIfIndex=( $(snmpbulkwalk -v2c -c $community $ipaddress .1.3.6.1.2.1.4.20.1.2 | awk -F ": " '{print $2}') )

for ((i=0; i<${#ipAdEntAddr[@]}; i++)); do
  ifDescr[$i]=$(snmpwalk -v2c -c $community $ipaddress .1.3.6.1.2.1.2.2.1.2.${ipAdEntIfIndex[$i]} | awk -F ": " '{print $2}')
  echo "${ifDescr[$i]}: ${ipAdEntAddr[$i]} ${ipAdEntNetMask[$i]}"
done

Thí dụ:

~]$ ./interface-info.sh -H 10.30.46.1 -C cisco
FastEthernet0/0: 10.30.46.1 255.255.255.0
Loopback0: 25.255.25.254 255.255.255.0
Tunnel10: 55.44.33.22 255.255.255.0
Dialer1: 172.31.10.10 255.255.255.0


Vlan:

Nếu bạn đang tìm kiếm Vlan ID và tên Vlan, bạn có thể sử dụng OID sau:

  • .1.3.6.1.4.1.9.9.46.1.3.1.1.4.1Có thể tìm thấy vtpVlanName (trên các thiết bị của Cisco) tại OID này và Vlan-ID có thể được thêm vào, ví dụ: ...1.4.1.[VLAN-ID](tương tự như ví dụ ifIndex và ifDescr ở trên).

    ~]$ snmptranslate  .1.3.6.1.4.1.9.9.46.1.3.1.1.4.1
    SNMPv2-SMI::enterprises.9.9.46.1.3.1.1.4.1
    
    ~]$ snmpwalk -v2c -c cisco 192.168.0.8 SNMPv2-SMI::enterprises.9.9.46.1.3.1.1.4.1
    SNMPv2-SMI::enterprises.9.9.46.1.3.1.1.4.1.1 = STRING: "default"
    SNMPv2-SMI::enterprises.9.9.46.1.3.1.1.4.1.10 = STRING: "VLAN0010"
    SNMPv2-SMI::enterprises.9.9.46.1.3.1.1.4.1.21 = STRING: "VLAN0021"
    SNMPv2-SMI::enterprises.9.9.46.1.3.1.1.4.1.100 = STRING: "VLAN0100"
    SNMPv2-SMI::enterprises.9.9.46.1.3.1.1.4.1.344 = STRING: "VLAN0344"
    SNMPv2-SMI::enterprises.9.9.46.1.3.1.1.4.1.456 = STRING: "iSCSI-TRAFFIC"
    SNMPv2-SMI::enterprises.9.9.46.1.3.1.1.4.1.1002 = STRING: "fddi-default"
    SNMPv2-SMI::enterprises.9.9.46.1.3.1.1.4.1.1003 = STRING: "token-ring-default"
    SNMPv2-SMI::enterprises.9.9.46.1.3.1.1.4.1.1004 = STRING: "fddinet-default"
    SNMPv2-SMI::enterprises.9.9.46.1.3.1.1.4.1.1005 = STRING: "trnet-default"
    


Ví dụ thủ công về việc loại bỏ các Vlan ID:

    ~]$ snmpbulkwalk -v2c -c cisco 192.168.0.8 1.3.6.1.4.1.9.9.46.1.3.1.1.4 | sed -e 's/.*4.1.\(.*\) =.*/\1/'
    1
    10
    21
    100
    344
    456
    1002
    1003
    1004
    1005

1

Nếu bạn muốn nhận thông tin về IP giao diện từ các bộ chuyển mạch / bộ định tuyến ở định dạng tương tự như tệp máy chủ, bạn có thể sử dụng tập lệnh bash của tôi. Tôi muốn có thông tin thực tế về tất cả các địa chỉ IP của các thiết bị mạng trong mạng của chúng tôi. Tất cả các thiết bị có thể truy cập thông qua SNMP. Tôi không thể tìm thấy một công cụ hoặc tập lệnh có thể làm điều đó nên tôi quyết định tự viết nó. Đầu ra có thể đơn giản thêm vào tập tin máy chủ. Mô tả giao diện hoặc tiền tố được viết dưới dạng một nhận xét, vì vậy nó sẽ được hiển thị ví dụ trong đầu ra theo dõi trong khi bạn có thể tìm kiếm tệp máy chủ để mô tả giao diện.

Đầu ra ở định dạng này:

ABCD Device_hostname-Interface_name # / Tiền tố #Interface mô tả

10.1.1.1 bộ định tuyến_R01-Gi1 / 0/2 # 28

10.5.1.22 Bắc Kinh-bộ định tuyến01-WAN-Tu611 # 24 # Cổng vào internet

192.168.24.254 tường lửa2-eth5 # 24

Kịch bản có sẵn từ http://network-linux.webnode.cz/news/bash-script-for-gathering-ip-addresses-of-interfaces-ENC-snmp .


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.