SNMP를 사용하여 특정 스위치에서 서브넷 목록을 생성하는 방법에 익숙한 사람이 있습니까? VLAN 목록은 어떻습니까? 그렇다면 관련 MIB / OID를 알려 주시겠습니까? (여기서 네트워크 초보자)
SNMP를 사용하여 특정 스위치에서 서브넷 목록을 생성하는 방법에 익숙한 사람이 있습니까? VLAN 목록은 어떻습니까? 그렇다면 관련 MIB / OID를 알려 주시겠습니까? (여기서 네트워크 초보자)
답변:
장치의 IP 주소, 서브넷 마스크 및 해당 인터페이스를 폴링하려는 경우 IP-MIB 및 IF-MIB MIB 에서 다음 OID를 사용할 수 있습니다 .
.1.3.6.1.2.1.4.20.1.1
-이 OID에서 IP 주소를 찾을 수 있습니다
~]$ 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
-이 OID에서 서브넷 마스크 지팡이를 찾을 수 있습니다
~]$ 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
-인터페이스 인덱스 ( ifTable Indexes )는 각 인터페이스에 대한 고유 한 정수입니다.
~]$ 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
-인터페이스 이름은이 OID에서 찾을 수 있으며 ifTable 색인은 ...2.1.2.[INDEX]
각 인터페이스에 추가됩니다 (예 :) .
~]$ 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
이러한 OID를 수동으로 걸거나 원하는 언어로 스크립트를 작성하거나 Tim Peck의 답변에 언급 된 것과 유사한 훨씬 더 똑똑한 프로그램 / 스크립트를 사용할 수 있습니다.
다음은 빠르고 더러운 쉘 예제입니다.
#!/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
예:
~]$ ./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 ID 및 VLAN 이름을 찾으려면 다음 OID를 사용할 수 있습니다.
.1.3.6.1.4.1.9.9.46.1.3.1.1.4.1
vtpVlanName는 이 OID에 상기 VLAN-ID가 추가 찾을 수 등 (시스코 장치에서) 볼 수 ...1.4.1.[VLAN-ID]
합니다 (ifIndex와 ifDescr 예와 유사한 전술).
~]$ 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"
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
호스트 파일과 유사한 형식으로 스위치 / 라우터에서 인터페이스 IP에 대한 정보를 얻으려면 내 bash 스크립트를 사용할 수 있습니다. 네트워크에있는 네트워크 장치의 모든 IP 주소에 대한 실제 정보를 원했습니다. 모든 장치는 SNMP를 통해 연결할 수 있습니다. 나는 그것을 할 수있는 도구 나 스크립트를 찾을 수 없어서 직접 작성하기로 결정했습니다. 호스트 파일에 간단하게 추가 할 수 있습니다. 인터페이스 설명 또는 접두사는 주석으로 작성되므로 예를 들어 traceroute 출력에 표시되고 호스트 파일에서 인터페이스 설명을 검색 할 수 있습니다.
출력 형식은 다음과 같습니다.
ABCD Device_hostname-Interface_name # / Prefix # 인터페이스 설명
10.1.1.1 router_R01-Gi1 / 0 / 2 # 28
10.5.1.22 Beijing-router01-WAN-Tu611 # 24 # 인터넷 포트
192.168.24.254 firewall2-eth5 # 24
스크립트는 http://network-linux.webnode.cz/news/bash-script-for-gathering-ip-addresses-of-interfaces-through-snmp 에서 사용 가능 합니다.
스위치 맵이이 모든 작업을 수행합니다.