![특정 OID에 대한 네트워크 범위를 쿼리하고 결과를 인쇄합니다.](https://linux55.com/image/182908/%ED%8A%B9%EC%A0%95%20OID%EC%97%90%20%EB%8C%80%ED%95%9C%20%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%20%EB%B2%94%EC%9C%84%EB%A5%BC%20%EC%BF%BC%EB%A6%AC%ED%95%98%EA%B3%A0%20%EA%B2%B0%EA%B3%BC%EB%A5%BC%20%EC%9D%B8%EC%87%84%ED%95%A9%EB%8B%88%EB%8B%A4..png)
이 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...'