查询特定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您可以简单地向 filter的输出添加一个命令。例如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...'

相关内容