특정 OID에 대한 네트워크 범위를 쿼리하고 결과를 인쇄합니다.

특정 OID에 대한 네트워크 범위를 쿼리하고 결과를 인쇄합니다.

이 bash 스크립트는 특정 OID에 대한 네트워크 범위를 쿼리하고 결과를 반환합니다.

#!/bin/bash

# snmpget command query the network range for target OIDs

for (( i=254; $i; i=$i-1 )) do host=10.250.53.$i; snmpget -v 2c -c public -t 0.5 -r 1 $host iso.3.6.1.2.1.1.1.0; done; read -p 'press Enter to continue...'

이 OID(sysDescr)에 특정 SW_REV 문자열이 포함된 경우 결과만 반환하도록 수정하려면 어떻게 해야 합니까? 즉, SW_REV: r4000-d7000r1037-993021u;버전이 다른 경우 주소는 무시됩니다.

답변1

snmpget간단히 필터 출력에 명령을 추가할 수 있습니다. 예를 들어 grep:

for (( i=254; $i; i=$i-1 )) do
    host=10.250.53.$i
    snmpget -v 2c -c public -t 0.5 -r 1 $host iso.3.6.1.2.1.1.1.0 | grep r4000-d7000r1037-993021u
done
read -p 'press Enter to continue...'

목표가 IP 주소만 검색하는 것이라면(출력이 무엇인지 모르겠습니다 snmpget) 문자열이 일치하는지 테스트하고( 사용하여 grep -q) 일치하는 경우 IP 주소만 표시할 수 있습니다.

for (( i=254; $i; i=$i-1 )) do
    host=10.250.53.$i
    if snmpget -v 2c -c public -t 0.5 -r 1 $host iso.3.6.1.2.1.1.1.0 | grep -q r4000-d7000r1037-993021u; then
        echo $host
    fi
done
read -p 'press Enter to continue...'

관련 정보