我正在研究使用Java API访问VCenter上的VMWare VM的Java类。VMWare访客工具(vixtools)API未找到system/tmp目录
Java API允许我们连接到VCenter,访问guest虚拟机(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
导航到该文件夹显示在listF中找到的文件ilesInGuest():
.
..
vmware-root
这将是罚款,我们在真空中运行,但该程序将需要从其他程序的安装和界面的temp目录,其用“”/tmp目录读取,修改或执行文件目录,而不是VMWare的隐藏位置。
我一直没有找到任何文件重新配置VMWare工具,也没有办法到达/ tmp目录使用API,我希望有人在SO会遇到并找到胜利的道路这个VMWare功能。
编辑:随着进一步的测试,我发现这个“特殊的”tmp目录只发生在posix,Windows上的VMWareTools API导航,因为我期望在所有的操作系统。
尝试禁用私人tmp目录。应该有一些vmtoolsd服务的设置文件。例如:http://upwork.link/apache2/centos7-how-do-disable-privatetmp-for-apache-with-systemd/ – Icarus3
@ Icarus3:你说得对,在/ usr/lib/systemd中有一个地方/system/vmtoolsd.service其中在安装工具期间设置了PrivateTmp = true的设置。我进入了一个测试虚拟机,并将设置更改为PrivateTmp = false,重新启动后,私有“tmp”目录消失,并且引用“/ tmp”按需要工作。在VMWare工具安装和设置过程中,此设置似乎不是可选的,因此需要使用此更改设置VM模板,或者需要使用配置脚本完成该模板。将您的评论转换为答案,我会接受它。 – rwheadon
我也从bbs.archlinux.org找到了单挑:“什么是目录systemd-private-xxxxxx?”注释“它们是由PrivateTmp = true(通常是ntpd)的服务创建的。在没有使用过之后,它们应该在/usr/lib/tmpfiles.d/tmp.conf中指定的时间内自动清除(默认为30天)“ – rwheadon