我正在尝试读取设备上 snmpwalk 的输出,如下所示(四种不同的变体)
场景 1 - 打印正常 输出:
6
6
场景 2 - 打印待机
输出:
6
5
场景 3 - 打印正常
输出:
6
场景 4 - 打印待机
输出:
5
我成功地将场景 3 和 4 与以下脚本匹配。但无法匹配场景 1 和 2。
if [ ${Ouput} -eq 6 ]; then
echo "OK"
exit 0
elif [ ${Ouput} -eq 5 ]; then
echo "Standby"
exit 1
fi
有人可以帮助我如何在 elsif 语句中匹配场景 1 和 2 吗?
我成功地将场景 3 和 4 与以下脚本匹配。但无法符合场景 1 和 2。
if [ ${Ouput} -eq 6 ]; then
echo "OK"
exit 0
elif [ ${Ouput} -eq 5 ]; then
echo "Standby"
exit 1
fi
场景 1 - 打印正常 输出:
6
6
场景 2 - 打印待机
输出:
6
5
看来你只需要测试输出的最后一行。
tail -n 1
通过管道传输到您的 snmpalk
命令:Ouput=$(snmpwalk ... | tail -n 1)
#!/bin/bash
Ouput=$(snmpwalk ...)
case ${Output##$'\n'} in
6) echo "OK"; exit 0;;
5) echo "Standby"; exit 1;;
esac
注意:我用
case
开关替换了if条件