2

私は(おそらく)異常な状況にあります。Windows ボックスで VMware CLI コマンドを実行する必要がありますが、シェル スクリプト内で cygwin CLI を使用します。今のところこれを変更することはできないため、「代わりにこれを実行してみませんか」という提案は無駄かもしれませんが、感謝しています。サンプル スクリプトを次に示します。

#!/bin/bash
# Paths for vmware-cmd.pl file to run vmware commands from vsphere cli
_vcli_dir="/cygdrive/c/Program Files (x86)/VMware/VMware vSphere CLI"
_vcli_bin="$_vcli_dir/bin"
_vcli_perl="$_vcli_dir/Perl"
_vcli_perl_bin="$_vcli_perl/bin"
_vcli_perl_lib="$_vcli_perl/lib"
_vcli_perl_vlib="$_vcli_perl_lib/VMware"
_vcmd=vmware-cmd.pl

export _orig_path=$PATH
# Add above directories to path variable
export PATH=$PATH:$_vcli_dir:$_vcli_bin:$_vcli_perl:$_vcli_perl_bin:$_vcli_perl_lib:$_vcli_perl_vlib
echo $PATH

$_vcmd /?

export PATH=$_orig_path
echo $PATH

上記のスクリプトを実行すると、

@INC で VMware/VIRuntime.pm が見つかりません (@INC には次が含まれます: /usr/lib/perl5/site_perl/5.14 /usr/lib/ perl5/vendor_perl/5.14/i686-cygwin-threads-64int /usr/lib/perl5/vendor_perl/5.14 /usr/lib/perl5/5.14/i686-cygwin-threads-64int /usr/lib/perl5/5.14 /usr/ lib/perl5/site_perl/5.10 /usr/lib/perl5/vendor_perl/5.10 /usr/lib/perl5/site_perl/5.8 .) /cygdrive/c/Program Files (x86)/VMware/VMware vSphere CLI/bin/vmware -cmd.pl 行 8. BEGIN に失敗しました -- コンパイルは /cygdrive/c/Program Files (x86)/VMware/VMware vSphere CLI/bin/vmware-cmd.pl 行 8 で中止されました。

DOS コマンド プロンプトから同じ vmware-cmd.pl スクリプトを実行できます。

c:> vmware-cm.pl

だから私は今私のインストールが正しいです。

手がかりはありますか?

4

3 に答える 3

0

この投稿は、私にそれを修正するアイデアを与えてくれました。しかし今、私はコアダンプを取得します。 Perl の @INC はどのように構築されますか? (別名、Perl モジュールが検索される場所に影響を与えるすべての方法は何ですか?)

追加された行は、2 番目の export PERL5LIB 行です。

#!/bin/bash
# Path for vmware-cmd.pl file to run vmware commands from vsphere cli
_vcli_dir="/cygdrive/c/Program Files (x86)/VMware/VMware vSphere CLI"
_vcli_bin="$_vcli_dir/bin"
_vcli_perl="$_vcli_dir/Perl"
_vcli_perl_bin="$_vcli_perl/bin"
_vcli_perl_lib="$_vcli_perl/lib"
_vcli_perl_vlib="$_vcli_perl_lib/VMware"
_vcmd=vmware-cmd.pl

export _orig_path=$PATH
# Add above directories to path variable
export PATH=$PATH:$_vcli_dir:$_vcli_bin:$_vcli_perl:$_vcli_perl_bin:$_vcli_perl_lib:$_vcli_perl_vlib
export PERL5LIB=$_vcli_dir:$_vcli_bin:$_vcli_perl:$_vcli_perl_bin:$_vcli_perl_lib:$_vcli_perl_vlib
echo $PATH

$_vcmd /?

export PATH=$_orig_path
echo $PATH
于 2013-03-21T17:17:15.893 に答える
0

これは、同じシェル スクリプトに保持できるようにする、以前に投稿されたものに代わるものです。

VIMCMD="/cygdrive/C/Program Files (x86)/VMware/VMware vSphere CLI/bin/vmware-cmd.pl"
VIMCMD_DOS=$(cygpath -d "$VIMCMD")
DOS_VIMCMD="cmd /c $VIMCMD_DOS"

次に、実行できます:

$ $DOS_VIMCMD --version
vSphere SDK for Perl version: 6.0.0
Script 'vmware-cmd.pl' version: 6.0.0
于 2016-07-08T13:17:23.133 に答える
0

ことわざにあるように、肘を通り抜けてa **に到達することで解決しました。

私がしたことは
- Windows ボックスの vmware cli をデフォルト ディレクトリにインストールする
- VMware メイン ディレクトリ、bin ディレクトリ、Perl ディレクトリ、および Perl/bin ディレクトリ
の環境変数を追加する - これらの環境変数を PATH 変数に追加する。

次に、パラメーターを取り、それらを正しい値で vmware-cli コマンドに連結する vmware-cli.bat ファイルを作成しました。たとえば、これを呼び出してサーバー内の VM を一覧表示します

cygwin:> ./vmware-cli.bat vmware-cmd.pl --server MyServer --username User --password PW -l

バッチファイル内で私は本質的に行います

REM Get first parm as the command, and then concatenate the rest of the parms
set VCLI_CMD=%1
shift
:LOOP
if %1x==x goto :EXECUTE
set VCLI_CMD=%VCLI_CMD% %1
shift
goto LOOP:

:EXECUTE
%VCLI_CMD%
于 2013-09-27T00:58:55.157 に答える