通过SNMP查询Windows Server电池级别

我有一台启用了SNMP的Windows Server 2003计算机。 我希望能够查询服务器的电池电量,因为它通过USB电缆连接到APC UPS。

到目前为止,我可以做到:

snmpwalk -Os -c public -v 1 192.168.128.2 1.3.6.1.4.1.318 

并得到:

 enterprises.318.1.1.1.4.1.1.0 = INTEGER: 1 enterprises.318.1.2.1.1.1.0 = STRING: "PowerChute Business Edition Agent, (C) 2001 APC." 

然而,我没有得到一个实际的电池剩余电量的百分比。 有任何想法吗?

您可以从WMI获得更好的信息。 Win32_Battery类应该为你提供你所需要的。

我build议从微软下载scriptomatic2,看看这个类提供了什么,一些入门代码让你走。 (为了获得最佳效果,请将Scriptomatic可执行文件复制到该机器并从中运行,以便它可以读取系统的CIM名称空间。)

OID是:.1.3.6.1.4.1.318.1.1.1.2.2.1.0
此外,为了获得在bash中的价值,所以你可以在脚本中使用它:

 # snmp query that returns battery level BATTERY=`snmpwalk -Os -c public -v 1 192.168.0.107 .1.3.6.1.4.1.318.1.1.1.2.2.1.0 | sed 's/.*: //g'` # snmp query that returns input voltage INPUT_VOLTAGE=`snmpwalk -Os -c public -v 1 192.168.0.107 .1.3.6.1.4.1.318.1.1.1.3.2.1.0 | sed 's/.*: //g'`