我正在开发一个Java类,它使用Java API访问VCenter上的VMWare VM。
Java API允许我们连接到VCenter,访问来宾VM(CentOS7)并列出目录中的文件,除了/ tmp目录之外没有任何问题。
用于参考: Doc: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-root上找到了它,它出现在
/tmp/systemd-private-f2b5415058d14dbfa4306235d53fed88-vmtoolsd.service-QN0Muw/tmp/vmware-root
导航到该文件夹显示了listFilesInGuest()中找到的文件:
.
..
vmware-root
我们在真空中操作会很好,但是程序需要从其他程序安装程序和接口读取,修改或执行temp目录中的文件,这些程序安装程序和接口使用“the”/ tmp目录而不是VMWare的埋藏位置。 / p>
我无法找到任何关于重新配置VMWare Tools的方法的文档,也没有找到使用API访问/ tmp目录的方法,我希望有人会遇到SO并找到胜利之路VMWare功能。
编辑:通过进一步的测试,我发现这个“特殊”的tmp目录只发生在posix中,Windows上的VMWareTools API就像我在所有操作系统中所期望的那样导航。答案 0 :(得分:2)
尝试禁用私有tmp目录。 vmtoolsd服务应该有一些设置文件。例如:apache
事实证明(见评论),这样的设置可以在以下位置找到: /usr/lib/systemd/system/vmtoolsd.service