特定の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...'

関連情報