我正在研究一个java类,它使用java api在vCenter上访问vmware vms。
java api允许我们连接vCenter、访问guest vm(centos7)和在目录中列出文件,除了/tmp目录之外没有任何问题。
使用参考:
医生:GuestFileManager

// filePathToCheck = "/tmp/some-file-to-find.txt
ManagedObjectReference fileManager = ...; // GuestFileManager
ManagedObjectReference vmGuest = ...;  // VirtualMachine
String fileToCheckName = FilenameUtils.getName(filePathToCheck); // -> some-file-to-find.txt
String guestDirectory = filePathToCheck.replace(fileToCheckName,""); // -> /tmp/
guestFiles = vimPort.listFilesInGuest(fileManager, vmGuest, auth, guestDirectory, null, null, null);

我使用的是guestfilemanager.listfilesinguest(),发现除了/tmp以外的任何目录,我都可以按照ssh会话中显示的格式列出目录中的文件。
使用listfilesinguest()查看路径“/tmp”目录,可以得到以下列表:
.
..
vmware-root (directory)

即使我的ssh会话显示:
.
..
finishedinstall
.font-unix
.ICE-unix
systemd-private-f2b5415058d14dbfa4306235d53fed88-vmtoolsd.service-QN0Muw
.Test-unix
.X11-unix
.XIM-unix

我在vmware根目录上找到了一个
/tmp/systemd-private-f2b5415058d14dbfa4306235d53fed88-vmtoolsd.service-QN0Muw/tmp/vmware-root

导航到该文件夹显示了listfilesinguest()中找到的文件:
.
..
vmware-root

我们可以在真空中操作,但程序需要从其他程序安装程序和接口读取、修改或执行temp目录中的文件,这些程序和接口使用“/tmp目录”,而不是vmware的隐藏位置。
我找不到任何关于重新配置vmware工具的文档,也找不到使用api访问/tmp目录的方法,我希望sow中的某个人会遇到,并为这个vmware功能找到一条成功的道路。
编辑:通过进一步的测试,我发现这个“特殊”的tmp目录只发生在posix中,windows上的vmwaretools api就像我在所有操作系统中所期望的那样导航。

最佳答案

尝试禁用私有tmp目录。vmtoolsd服务应该有一些设置文件。例如:apache
事实证明(见注释),这种设置可以在:
/usr/lib/systemd/system/vmtoolsd.service服务

关于java - VMWare guest 工具(vixtools)API找不到系统/tmp目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43597373/

10-13 03:27
查看更多