2017-04-24 2 views
1

Java APIを使用してVCenter上のVMWare VMにアクセスするJavaクラスで作業しています。VMWareゲストツール(vixtools)APIがシステム/ tmpディレクトリを見つけられません

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セッション

. 
.. 
vmware-root (directory) 

にもかかわらず、私のSSHセッションショー:

. 
.. 
finishedinstall 
.font-unix 
.ICE-unix 
systemd-private-f2b5415058d14dbfa4306235d53fed88-vmtoolsd.service-QN0Muw 
.Test-unix 
.X11-unix 
.XIM-unix 

私が見つけたlistFilesInGuest()パスを見ていると

は "を/ tmp" ディレクトリには、私がのリストを取得しますvmware-rootと表示され、

/tmp/systemd-private-f2b5415058d14dbfa4306235d53fed88-vmtoolsd.service-QN0Muw/tmp/vmware-root 

が表示され、listF ilesInGuest():

. 
.. 
vmware-root 

これは、我々は真空中で動作罰金になりますが、プログラムは「」を/ tmpを使用する他のプログラムのインストーラとインタフェースからtempディレクトリ内のファイルを読み取り、変更、または実行する必要があります。 VMWareの埋め込まれた場所ではありません。

VMWare Toolsを再構成する方法や、APIを使用して/ tmpディレクトリに移動する方法についてのドキュメントを見つけることができず、SOの誰かが遭遇し、このVMWare機能。

EDIT:この特別なtmpディレクトリはposixでのみ発生することがわかりました.Windows上のVMWareTools APIはすべてのOSで期待されるようにナビゲートします。

+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は、ツールのインストール中に設定されます。私はテストVMに入り、設定をPrivateTmp = falseに変更し、再起動後にプライベート "tmp"ディレクトリがなくなり、 "/ tmp"への参照が必要に応じて機能しました。この設定は、VMWareツールのインストールと設定中はオプションではないようです。そのため、VMテンプレートをこの変更で設定する必要があるか、プロビジョニングスクリプトを使用して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

関連する問題