VMWare 来宾工具 (vixtools) API 未找到系统 /tmp 目录
VMWare guest tools (vixtools) API is not finding the system /tmp directory
我正在开发 Java class,它使用 Java API.
访问 VCenter 上的 VMWare 虚拟机
Java API 允许我们连接到 VCenter,访问来宾 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-root 上找到了它,它出现在
/tmp/systemd-private-f2b5415058d14dbfa4306235d53fed88-vmtoolsd.service-QN0Muw/tmp/vmware-root
导航到该文件夹显示在 listFilesInGuest():
中找到的文件
.
..
vmware-root
我们可以在真空中操作,但程序需要从其他使用 "the" /tmp 目录而非 VMWare 的程序安装程序和界面读取、修改或执行临时目录中的文件掩埋位置。
我找不到任何关于重新配置 VMWare 工具的方法的文档,也找不到使用 API 进入 /tmp 目录的方法,我希望 SO 中的某个人会遇到并且找到了此 VMWare 功能的胜利之路。
编辑:通过进一步测试,我发现此 "special" tmp 目录仅出现在 posix 中,Windows 上的 VMWareTools API 导航如我所料所有 OS.
尝试禁用私有 tmp 目录。 vmtoolsd 服务应该有一些设置文件。例如:apache
结果(见评论),这样的设置可以在:
/usr/lib/systemd/system/vmtoolsd.服务
我正在开发 Java class,它使用 Java API.
访问 VCenter 上的 VMWare 虚拟机Java API 允许我们连接到 VCenter,访问来宾 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-root 上找到了它,它出现在
/tmp/systemd-private-f2b5415058d14dbfa4306235d53fed88-vmtoolsd.service-QN0Muw/tmp/vmware-root
导航到该文件夹显示在 listFilesInGuest():
中找到的文件.
..
vmware-root
我们可以在真空中操作,但程序需要从其他使用 "the" /tmp 目录而非 VMWare 的程序安装程序和界面读取、修改或执行临时目录中的文件掩埋位置。
我找不到任何关于重新配置 VMWare 工具的方法的文档,也找不到使用 API 进入 /tmp 目录的方法,我希望 SO 中的某个人会遇到并且找到了此 VMWare 功能的胜利之路。
编辑:通过进一步测试,我发现此 "special" tmp 目录仅出现在 posix 中,Windows 上的 VMWareTools API 导航如我所料所有 OS.
尝试禁用私有 tmp 目录。 vmtoolsd 服务应该有一些设置文件。例如:apache
结果(见评论),这样的设置可以在: /usr/lib/systemd/system/vmtoolsd.服务