我正在使用VMwareExsi API,即vijava sdk来访问虚拟机管理程序中运行的一些虚拟机。我正在尝试获取在其中一个Vms中运行的所有进程的列表。我有一个GuestProcessManager实例,我正在调用GuestProcessManager .listProcessesInGuest(GuestAuthentication gauth,pids)。显然,gauth是我无法获取GuestAuthentication对象的method.But的强制参数。我如何检索它?
我尝试了以下方法:
Folder rootFolder = si.getRootFolder();
ManagedEntity[] mes = new InventoryNavigator(rootFolder)
.searchManagedEntities("VirtualMachine");
NamePasswordAuthentication auth = null;
auth = new NamePasswordAuthentication();
String username = "xxx";
String password = "xxxxxxx";
long[] pids=null;
auth.setUsername(username);
auth.setPassword(password);
auth.setInteractiveSession(true);
GuestProcessInfo[] processInfo=si.getGuestOperationsManager().getProcessManager((VirtualMachine)mes[1]).listProcessesInGuest(auth,pids);我得到的是:异常导致:VI SDK调用exception:com.vmware.vim25.GuestOperationsUnavailable.
如果我将interactivesession设置为false,则异常消息将更改为exception caused:VI SDK调用exception:com.vmware.vim25.GuestComponentsOutOfDate。我正在使用vijava5.5 .jar进行开发。
主机上的系统和EXSI版本: vmnix-x86VMware ESXi 5.5.0。
下面是我从我的虚拟机获取的一些信息,这些信息显示虚拟机处于运行状态。CPU分配份额::2000
内存分配份额::20480 RunTime最大CPU使用率::5799
RunTime最大内存使用率::2048
运行时内存开销::36024320
平均CPU利用率1.375237150741635E-4
VmVirtualMachine的列出流程:2@ 10.126.77.45
异常导致:VI SDK调用exception:com.vmware.vim25.GuestOperationsUnavailable
来宾操作系统:Red Hat Enterprise Linux 5(64位)
虚拟机版本:vmx-10
CPU:4 vCPU
内存:12288 MB
内存开销:373.0514 MB
VMware工具:来宾工具运行
IP地址:10.126.77.221
状态:正在运行
发布于 2014-10-13 17:24:15
您能否提供更多详细信息Vcenter版本、Esxi版本、VMware工具版本等。
我怀疑的是vmware工具没有正常运行,或者某些版本不匹配阻止了身份验证。
我已经离开java好几年了。但当我编写下面的代码时,它对我来说工作得很好。你能在你的设置中检查这段代码吗!
ServiceInstance si = new ServiceInstance(new URL("https://10.22.10.13/sdk"), "Administrator", "Password", true);
Folder rootFolder = si.getRootFolder();
String name = rootFolder.getName();
ManagedEntity[] mes = new InventoryNavigator(rootFolder).searchManagedEntities("VirtualMachine");
if(mes==null || mes.length ==0)
{
return;
}
VirtualMachine vm = null;
for (ManagedEntity entity : mes) {
if (entity.getName().equals("Ubuntu12")){
vm = (VirtualMachine)entity;
break;
}
}
NamePasswordAuthentication creds = new NamePasswordAuthentication();
creds.username = "reuben";
creds.password = "reuben";
GuestProcessInfo[] processes = si.getGuestOperationsManager().getProcessManager(vm).listProcessesInGuest(creds, null);
for (GuestProcessInfo process: processes){
System.out.println("Process Name: "+process.name);
}https://stackoverflow.com/questions/25846931
复制相似问题