#!/bin/sh
#
# found if this IP is receiving data
#
#echo hexIpAdd=`sh convertIPAddressToHex $1`
hexIpAdd='C0 A8 01 02'
#`snmpwalk -v 2c -c public 192.168.252.187 .1.3.6.1.4.1.231.7.1.2.2.1.4.7.13.1.1.3301 | grep '$hexIpAdd' | wc -l`
if [ `snmpwalk -v 2c -c public 192.168.252.187 .1.3.6.1.4.1.231.7.1.2.2.1.4.7.13.1.1.3301 | grep '$hexIpAdd' | wc -l` -gt 0 ]; then
echo "Value FOUND!!"
else
echo "Value NOT FOUND!!"
fi
代码非常简单,我将常规IP转换为十六进制IP,并通过SNMPWALK查询网络设备,以查看转换后的IP是否正在接收流式传输。
问题是,grep管道无法使用VARIABLE,这意味着如果我将"grep '$hexIpAdd'"
替换为"grep 'C0 A8 01 02'"
它可以正常工作。
答案 0 :(得分:0)
grep -q
来避免命令替换,使用wc
和[...]
表达式进行管道处理:这样做:
hexIpAdd='C0 A8 01 02'
if snmpwalk -v 2c -c public 192.168.252.187 .1.3.6.1.4.1.231.7.1.2.2.1.4.7.13.1.1.3301 |
grep -q "$hexIpAdd"; then
echo "Value FOUND!!"
else
echo "Value NOT FOUND!!"
fi