У меня есть машина с Windows Server 2003 с включенным протоколом SNMP. Я хочу иметь возможность запрашивать уровень заряда батареи сервера, поскольку он подключен к ИБП APC через USB-кабель.
Пока могу:
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."
Однако я и близко не могу получить фактический OID, который показывает процент оставшегося заряда батареи. Любые идеи?
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'`
Вы можете получить более подробную информацию из WMI. В Win32_Battery класс должен дать вам то, что вам нужно.
Я рекомендую загрузить scriptomatic2 от Microsoft, чтобы увидеть, что предоставляет этот класс, и немного начального кода, который поможет вам начать работу. (Для достижения наилучших результатов скопируйте исполняемый файл Scriptomatic на этот компьютер и запустите его оттуда, чтобы он мог прочитать пространство имен CIM системы.)