1

VMware Perlライブラリ(ESXiホストでSOAPサービスを呼び出すように見える)を使用して、LinuxボックスとESXiホスト間の相互作用をスクリプト化しようとしています。

解決策が見つからないエラーが発生しました:Undefined subroutine &LWP::Protocol::https::Socket::can_read called at /usr/local/share/perl5/LWP/Protocol/http.pm line 22

現在、Net-HTTP-6.03を実行しています。私はNet-HTTP-6.05を試してみましたが、Webベースの呼び出しが非常に遅くなります(その後の呼び出しも最終的に失敗し、エラーメッセージとして約1.2MBのXMLが表示されます)-さまざまなフォーラムが示唆していることは、元に戻すことによってのみ解決できます6.03まで(経由cpan install GAAS/Net-HTTP-6.03.tar.gz)。

私のコードの核心は次のとおりです。

use VMware::VIRuntime;
my $context = {
    options => ParseOptions(),  # result of using GetOpts::Long to parse command-line
    session => undef
};

$ENV{PERL_NET_HTTPS_SSL_SOCKET_CLASS} = "Net::SSL";    # Suppresses SSL_VERIFY_NONE
if ($context->{options}->{'ignore-ssl-errors'}) { 
    $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;            # Ignores certificate errors
}

## next line fails
$context->{session} = Vim::login(
    service_url => $context->{options}->{url}, 
    username => $context->{options}->{username}, 
    password => $context->{options}->{password}
);

これを機能させるために私が(できる|必要がある)他に何かすることはありますか?

4

2 に答える 2

1

私はそれを持っている。Net-HTTPだけでなく、古いバージョンからBundle::LWPを再インストールする必要がありました。それがなければ、LWPv6.05がNet-HTTPv6.03と通信しようとしました。

LWP == libwww-perl(はい、私はとても新しいです)に気づいたら、必要なパッケージ全体を見つけました。

cpan install GAAS/libwww-perl-6.03.tar.gz
于 2013-03-16T00:52:48.287 に答える
0

LWP6.05とNet::HTTP 6.01で再現されています。これは、この記事の執筆時点でMacPortsがインストールしているカクテルです。Net :: HTTPを6.06(現在)にアップグレードすると、次のように解決されました。

sudo cpan Net::HTTP
于 2014-03-17T11:00:31.267 に答える