此 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...'