2017-04-24 89 views
1

我正在研究使用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导航,因为我期望在所有的操作系​​统。

+1

尝试禁用私人tmp目录。应该有一些vmtoolsd服务的设置文件。例如:http://upwork.link/apache2/centos7-how-do-disable-privatetmp-for-apache-with-systemd/ – Icarus3

+0

@ Icarus3:你说得对,在/ usr/lib/systemd中有一个地方/system/vmtoolsd.service其中在安装工具期间设置了PrivateTmp = true的设置。我进入了一个测试虚拟机,并将设置更改为PrivateTmp = false,重新启动后,私有“tmp”目录消失,并且引用“/ tmp”按需要工作。在VMWare工具安装和设置过程中,此设置似乎不是可选的,因此需要使用此更改设置VM模板,或者需要使用配置脚本完成该模板。将您的评论转换为答案,我会接受它。 – rwheadon

+0

我也从bbs.archlinux.org找到了单挑:“什么是目录systemd-private-xxxxxx?”注释“它们是由PrivateTmp = true(通常是ntpd)的服务创建的。在没有使用过之后,它们应该在/usr/lib/tmpfiles.d/tmp.conf中指定的时间内自动清除(默认为30天)“ – rwheadon

回答

2

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

事实证明(见注释),这样的设置可以在发现: /usr/lib/systemd/system/vmtoolsd.service