【问题标题】:VMWare guest tools (vixtools) API is not finding the system /tmp directoryVMWare 来宾工具 (vixtools) API 未找到系统 /tmp 目录
【发布时间】:2017-04-24 20:42:15
【问题描述】:

我正在研究一个使用 Java API 访问 VCenter 上的 VMWare 虚拟机的 Java 类。

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

这很好,我们在真空中操作,但程序将需要从其他程序安装程序和接口读取、修改或执行临时目录中的文件,这些安装程序和接口使用“/tmp”目录而不是 VMWare 的隐藏位置。

我找不到任何有关重新配置 VMWare 工具的方法的文档,也找不到使用 API 进入 /tmp 目录的方法,我希望 SO 中的某个人会遇到并为此找到成功的路径VMWare 功能。

编辑:通过进一步的测试,我发现这个“特殊”的 tmp 目录只发生在 posix 中,Windows 上的 VMWareTools API 的导航方式与我在所有操作系统中的预期一样。

【问题讨论】:

  • 尝试禁用私有 tmp 目录。 vmtoolsd 服务应该有一些设置文件。例如:upwork.link/apache2/…
  • @Icarus3 :你是对的,在 /usr/lib/systemd/system/vmtoolsd.service 中有一个地方设置 PrivateTmp=true 在工具安装期间设置。我进入了一个测试虚拟机并将设置更改为 PrivateTmp=false,重启后私有“tmp”目录消失了,对“/tmp”的引用可以正常工作。在 VMWare 工具安装和设置期间,此设置似乎不是可选的,因此需要使用此更改设置 VM 模板,或者需要使用配置脚本来完成。将您的评论变成答案,我会接受。
  • 我也从 bbs.archlinux.org 找到了提示:“systemd-private-xxxxxx 目录是什么?”带有注释“它们是由 PrivateTmp=true(通常是 ntpd)的服务创建的。它们应该在 /usr/lib/tmpfiles.d/tmp.conf 中指定的时间(30默认天数)”

标签: java linux unix vmware-tools vix


【解决方案1】:

尝试禁用私有 tmp 目录。 vmtoolsd 服务应该有一些设置文件。例如:apache

事实证明(参见 cmets ),可以在以下位置找到此类设置: /usr/lib/systemd/system/vmtoolsd.service

【讨论】:

    猜你喜欢
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 2012-09-02
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多