linux - Snmpwalk Linux Bash 不返回数组

标签 linux bash shell snmp esx

我在 opensuse linux 上运行 nagios 服务器,通过 snmp 链接到 esx 3.5 服务器

我试图让 snmpwalk 返回一个数组,但它只返回一个值。

在 esx box 上,我有以下 shell 来查找所有快照的大小-

/usr/bin/find /vmfs/volumes/ -name '*delta*.vmdk' -printf %f' '%s'\n' 

在 esx box 上运行时返回以下内容-

[root@localhost root]# /bin/sh /etc/snmp/snmp_snapshots.sh
testnag01-000001-delta.vmdk 16840704
testnag01-000002-delta.vmdk 167835648
testnag01-000003-delta.vmdk 151058432

在 nagios 盒子上我有以下 shell-

declare -a RESULT=$(/usr/bin/snmpwalk -v 2c -c public 10.10.0.20 .1.3.6.1.4.1.6876.57.101.2 | grep vmdk | awk {' print $4,$5 '} | sed 's/ /_size:/g' | sed 's/\"//g')

echo "snapshot 1" ${RESULT[0]}
echo "snapshot 2" ${RESULT[1]}

这只返回一个值,(列表中的第二个)-

snapshot 1 testnag01-000002-delta.vmdk:167835648
snapshot 2

当我自己运行命令时-

/usr/bin/snmpwalk -v 2c -c public 10.10.0.20 .1.3.6.1.4.1.6876.57.101.2

我得到以下返回-

SNMPv2-SMI::enterprises.6876.57.101.2 = STRING: "testnag01-000002-delta.vmdk 167835648"

所以看起来命令本身未能返回多个结果?

我在这里是菜鸟,所以我很可能会遗漏一些明显的东西......

提前致谢

最佳答案

我在别处得到了答案,但我想我会把它贴在这里以防其他人遇到同样的问题-

OID 中的最后一个数字返回记录号 - 所以 .2 返回第二个值

一旦我删除了这个 .2 并使用了这个命令-

/usr/bin/snmpwalk -v 2c -c public 10.10.0.20 .1.3.6.1.4.1.6876.57.1​​01

它运行良好!

关于linux - Snmpwalk Linux Bash 不返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18485806/

相关文章:

linux - 虚拟机中linux断电后如何保存状态?

linux - shell脚本中的进程计数

bash - Bash 中 heredoc 的输入语法

windows - SSH Windows 到 UNIX

linux - 从 Mac iOS 到 Linux

c - 在 Linux 中使用 C 中的几种 Ethtypes 接收以太网数据包

linux - 64 位 linux 上 32 位进程的地址空间

linux - diff line-format : Show delete, 新的和更改的行?

bash - 删除两个定界符之间的字符串,包括

mysql - 在 bash 脚本中使用带有 where 选项和长参数列表的 mysqldump