Назад | Перейти на главную страницу

NSClient ++: запущенная виртуальная машина VirtualBox отображается как отключение питания

Мне нужно контролировать виртуальную машину, запущенную в среде Windows Server 2008, с помощью VirtualBox. Я использую Nagios для мониторинга. Этот процесс выполняется в среде сервера Ubuntu.

Связь между Nagios и машиной Windows основана на NRPE (Nagios Remote Protocol Executor). Я установил NSClient ++ на машину Windows и написал сценарий, который запускает команду VBoxManage для проверки состояния виртуальной машины.

Вот сценарий:

@ECHO off

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"  showvminfo "win732" --machinereadable > C:\Users\root\etat_machine.txt
FOR /F "tokens=* delims= " %%a in ('FINDSTR /I "win732" C:\Users\root\etat_machine.txt ^| FIND /C /I "win732"') do ( set res=%%a )

IF %res% == 1 goto ok
IF %res% == 0 goto err

:err
ECHO WARNING: VM DOWN
EXIT /B 1

:ok
ECHO OK: VM UP
EXIT /B 0

Если я запустил этот сценарий непосредственно на сервере Windows (./check_vm.bat), файл etat_machine.txt будет содержать VMState = "running", и сценарий вернет VM UP. Если сценарий выполняется через NRPE, он содержит VMState = "poweroff", хотя виртуальная машина работает.

Есть у кого-нибудь объяснение? Я проверил пользователя, выполняющего скрипт, и в обоих случаях это root. Так что я не думаю, что это проблема с разрешением ... Или, может быть, разрешение на службу NSClient тогда ...

Я действительно думаю, что это связано с привилегиями (или, по крайней мере, с тем, как работает Virtual box). Я провел здесь быстрый тест (поскольку я широко использую виртуальный ящик для тестирования nsclient ++).

Запуск данного виртуального бокса от имени «я» (привилегированный пользователь). Затем выполните следующую команду: VBoxManage.exe showvminfo 610c457f-52e2-4c83-9e0c-e3ef13a8b152 (где GUID оказался одной из моих виртуальных машин).

Как «я» я получаю:

State:           running (since 2011-08-30T07:12:01.597000000)

Как и я с консолью администратора, я получаю (т.е. cmd как admin):

State:           powered off (since 2011-08-30T03:50:32.000000000)

В качестве пользовательского теста я получаю:

VBoxManage.exe: error: Could not find a registered machine named '610c457f-52e2-4c83-9e0c-e3ef13a8b152'

В качестве пользовательского теста в качестве администратора я получаю:

VBoxManage.exe: error: Could not find a registered machine named '610c457f-52e2-4c83-9e0c-e3ef13a8b152'

Таким образом, похоже, что состояние не переносится между разными пользователями / уровнями. Но опять же, это просто я играю, поэтому я действительно не знаю ...

NSClient ++ был запущен как системная учетная запись. Использовать PsИнструменты чтобы запустить ваш bat-файл (или VBoxManage.exe) в качестве этой учетной записи, чтобы посмотреть, что произойдет.