VMWare Umgebung per Script abfragen - Fehlermeldung Can't locate Functions.pm
Klaus1
- sonstiges
Hallo zusammen,
ich hoffe, ich finde hier jemanden, der mir weiterhelfen kann, wo es ja nur bedingt etwas mit HTML zu tun hat. 😕
Wir hatten bis vor kurzem noch eine VMWare-Umgebung in Version 5.1. Bis dahin liefen auch die Aufrufe der check_vmware_api.pl problemlos. Ich konnte die Auslastung (Speicher, Prozessor, Netzwerk), die Anzahl der Hosts je ESX-Host und die Auslastung der Datastores ermitteln.
Nach der Migration auf 6.7 funktionierte die Ermittlung der Auslastung der Datastores nicht mehr und ich nahm an, dass es dem großen Release-Sprung geschuldet war und ich eine neue Version des Scripts und der VMWare vSphere CLI installieren muss.
Nun funktioniert aber keiner der Abfragen mehr. Ich erhalte immer den Fehler: Can't locate Monitoring/Plugin/Functions.pm in @INC at check_vmware_api.pl line 39.
Das Internet zeigt für Linux-Versionen, dass dire Nagios Plugins noch nachinstalliert werden müssten, aber zum Einen läuft der Apache läuft unter Windows und ich finde keine Nagios-Plugins für Windows und zum Anderen ist das Modul eigentlich vorhanden und innerhalb des Suchzweigs ../Perl/lib/Nagios/Plugin.
Hat jemand eine Idee, wie ich das Script zum Laufen bekomme?
Liebe Grüße,
Klaus
Ich erhalte immer den Fehler: Can't locate Monitoring/Plugin/Functions.pm in @INC at check_vmware_api.pl line 39.
Ganz einfach: Das Modul Monitoring::Plugin::Functions
ist nicht in diesem Pfad installiert. MFG
@INC sucht in drei Verzeichnissen:
Ich bin zunächst davon ausgegangen, dass er auch die in diesem Pfad angegebenen Unterverzeichnisse mit durchsuchen würde, aber ich habe auch versucht, alle Dateien aus dem Unterverzeichnis Nagios/Plugin direkt nach Perl/lib, nach Perl/vendor/lib und nach Perl/site/lib kopiert.
Hatte aber nicht den erhofften Erfolg.
Es gibt verschiedene Möglichkeiten @INC zu erweitern das hängt auch von Deiner Perlversion ab. Wenn der bisherige Pfad Monitoring/Plugin/Functions.pm
lautete, ist der auch in der bisherigen Datei Funkctions.pm als package Monitoring::Plugin::Functions;
deklariert.
Also falls Du den Pfad ändern solltest, die package Deklaration beachten. Du kannst aber auch Perl/site/lib
für Dein Modul verwenden, wenn es nur die o.g. Datei ist: dahinkopieren und die Packagedeklaration anpassen. Und je nachdem wie Letztere lautet wird das Modul dann eingebunden.
Beachte auch: Nicht ins vendor/lib und nicht ins /lib Verzeichnis! Eigene Module immer nach site/lib weil dieses Verzeichnis bei einem Upgrade nicht verändert wird. MFG
Hallo Klaus,
Nun funktioniert aber keiner der Abfragen mehr. Ich erhalte immer den Fehler: Can't locate Monitoring/Plugin/Functions.pm in @INC at check_vmware_api.pl line 39.
Hat jemand eine Idee, wie ich das Script zum Laufen bekomme?
Du musst den Perl-Include-Pfad so anpassen, dass das Modul wieder gefunden wird.
Viele Grüße
Robert
In der Systemumgebung habe ich sowohl den Pfad für PERL5LIB als auch für PELRLIB auf Perl/lib gesetzt.
In der Fehlermeldung steht, dass Perl das Modul in den folgenden Verzeichnissen sucht.
@INC sucht in drei Verzeichnissen:
In alle dieser drei Verzeichnisse habe ich schon die Module aus Nagios/Plugin kopiert, aber ohne Erfolg.
Hallo Klaus,
In der Systemumgebung habe ich sowohl den Pfad für PERL5LIB als auch für PELRLIB auf Perl/lib gesetzt.
Was spricht denn dagegen, PERL5LIB so zu setzen, dass auch deine Monitoring/Plugin/Functions.pm
gefunden wird?
Wie sieht eigentlich das use
dafür aus?
use Functions;
# oder etwa
use Monitoring::Plugin::Functions;
In der Fehlermeldung steht, dass Perl das Modul in den folgenden Verzeichnissen sucht.
@INC sucht in drei Verzeichnissen:
- Perl/site/lib
- Perl/vendor/lib
- Perl/lib
Und wie ich schrieb, kann man @INC
erweitern.
In alle dieser drei Verzeichnisse habe ich schon die Module aus Nagios/Plugin kopiert, aber ohne Erfolg.
Der Pfad und use
müssen auch zueinander passen.
Viele Grüße
Robert
Ich bin jetzt einen deutlichen Schritt weiter, nachdem ich im site/lib Verzeichnis ein Verzeichnis Monitoring erstellt habe und dort die Module kopiert habe, die im Verzeichnis Nagios liegen. Nachdem ich so ein paar weitere Module zum Laufen bringen konnte, bricht das Script jetzt mit der Fehlermeldung ab:
Can't locate loadable object for module Crypt::SSLeay in @INC at perl/site/lib/Net/SSL.pm line 16.
Habt ihr hier eine Idee?
Auf der Kommandozeile: cpan -i Crypt::SSLeay
fertig.
Auf der Kommandozeile:
cpan -i Crypt::SSLeay
fertig.
Das funktioniert aber doch nur unter Linux oder? Oder unter Windows auch?
Auf der Kommandozeile:
cpan -i Crypt::SSLeay
fertig.Das funktioniert aber doch nur unter Linux oder? Oder unter Windows auch?
Selbstverständlich funktioniert cpan
unter Windows. Und wenn ppm
instaliert ist (Windows) kanst Du das auch mit ppm install Crypt::SSLeay
installieren. MFG
Ok, mit cpan -i Crypt::SSLeay
funktionierte es erstmal nicht direkt.
Das System konnte, warum auch immer, nicht das MiniGW und DMAKE automatisch installieren.
Mit ppm install MiniGW
wurde dann beides heruntergeladen, aber letztlich dann auch abgebrochen:
openssl-version.c:2:30: fatal error: openssl/opensslv.h: No such file or directory. compilation terminated. Failed to build and link a simple executible using OpenSSL
Unter Linux soll man libssl-dev installieren. Aber unter Windows?
perl -V:make
zeigt ob Deine gcc Umgebung konfiguriert ist. Für die cpan
Shell muss ein einmaliges Setup gemacht werden. Und wahrscheinlich erfordert Deine ganze Umgebung, daß openssl (f. Windows) installiert sein muss. Danach Crypt::SSLeay. MFG
Zeig mal perl -v
perl -v zeigt:
This is perl 5, version 26, subversion 3 (v5.26.3) built for MSWin32-x64-multi-thread
Mich wundert, dass ich Softwarekomponenten nachinstallieren soll, obwohl die frühere Version von der check_vmware_api.pl mit der alten VMWare-Umgebung prima funktioniert hatte.
Ich habe die OpenSSL-Zip-Datei heruntergeladen und nach c:\openssl entpackt. Da Perl ja noch nichts von c:\openssl wissen kann, habe ich versucht:
perl c:\openssl\Configure VC-WIN64I
Das hat erstmal keinen Fehler produziert, aber da fehlt laut Installationsanleitung noch das
nmake install
. nmake ist für mein Windows erstmal unbekannt, als Alternative soll wohl dmake genutzt werden können.
Da weiß ich wiederum nicht wie ich das aufrufen soll, denn dmake install
sagt, "Don't know how to make 'install'"
.
dmake oder nmake kriegst Du von Deinem Perlvendor. Openssl für Windows hat ein Setup. Viel Erfolg!
Siehe auch und OpenSSL für Win32 kriegst Du bei heise downloads. MFG
dmake oder nmake kriegst Du von Deinem Perlvendor. Openssl für Windows hat ein Setup. Viel Erfolg!
Eigentlich wird dmake automatisch schon mit MiniGw mitinstalliert. Bei der Installation anderer Module funktioniert es auch. Nur bei Crypt::SSLeay nicht.
Ich habe sowohl die Github-Version von OpenSSL probiert, als auch die installierbare Windows-Binary. Noch immer wird openssl/opensslv.h nicht gefunden.
Wenn ich nur wüsste, wo diese Datei gesucht wird... Den Pfad auf das Verzeichnis setzen, hat nicht geholfen.
Moin,
Eigentlich wird dmake automatisch schon mit MiniGw mitinstalliert.
Was heißt denn eigentlich? Ist es dabei oder nicht?
Ich habe sowohl die Github-Version von OpenSSL probiert, als auch die installierbare Windows-Binary. Noch immer wird openssl/opensslv.h nicht gefunden.
Wenn ich nur wüsste, wo diese Datei gesucht wird... Den Pfad auf das Verzeichnis setzen, hat nicht geholfen.
Im Makefile sollte eigentlich der Include-Pfad von C enthalten sein. Ggf. musst du diesen anpassen.
Viele Grüße
Robert
dmake oder nmake kriegst Du von Deinem Perlvendor. Openssl für Windows hat ein Setup. Viel Erfolg!
Eigentlich wird dmake automatisch schon mit MiniGw mitinstalliert.
Msys bringt ein make.exe
mit. Und Msys kommt zusammen mit MinGW.
Aber wenn Du mit ppm
installierst, brauchst Du das alles gar nicht. Was hast Du denn für ein Poblem mit ppm?
Was passiert wenn Du ppm install Crypt::SSLeay
eingibst?
MFG
Hallo,
Aber wenn Du mit
ppm
installierst, brauchst Du das alles gar nicht. Was hast Du denn für ein Poblem mit ppm?Was passiert wenn Du
ppm install Crypt::SSLeay
eingibst?
ppm install failed: Can't find any package that provides Crypt::SSLeay
Hallo,
Aber wenn Du mit
ppm
installierst, brauchst Du das alles gar nicht. Was hast Du denn für ein Poblem mit ppm?Was passiert wenn Du
ppm install Crypt::SSLeay
eingibst?
ppm install failed: Can't find any package that provides Crypt::SSLeay
Hab schon versucht das Modul darüber zu installieren:
ppm install http://www.bribes.org/perl/ppm64/Crypt-SSLeay.ppd
aber erhalte die Fehlermeldung: The PPD does not provide code to install for this platform.
Ist möglicherweise zu alt für Perl 5.26.3 ?
Hab schon versucht das Modul darüber zu installieren: ppm install http://www.bribes.org/perl/ppm64/Crypt-SSLeay.ppd aber erhalte die Fehlermeldung: The PPD does not provide code to install for this platform. Ist möglicherweise zu alt für Perl 5.26.3 ?
Die Dateien downloadn und händische Korrektur.
http://www.bribes.org/perl/ppm/Crypt-SSLeay.ppd ist nur eine Textdatei, da trägst Du einfach Deine Perlversion ein.
Lokal: ppm install Crypt-SSLeay.ppd
zipdate nicht vergessen:
MFG
PS: Beispiel ohne Angabe der Perlversion
<SOFTPKG NAME="Device-USB-PX1674" VERSION="1.01">
<ABSTRACT>CMD for USB-Dongle</ABSTRACT>
<AUTHOR>xx@example.de</AUTHOR>
<IMPLEMENTATION>
<CODEBASE HREF="Device-USB-PX1674.zip" />
</IMPLEMENTATION>
</SOFTPKG>
Danke Dir vielmals! Das hat mir echt deutlich weitergeholfen.
Jetzt habe ich noch einen Fehler beim Aufruf:
Undefined subroutine &Util::disconnect called at check_vmware_api.pl line 819
In Zeile 819 steht: Util::disconnect();
Hast Du da auch noch eine Idee?
Danke Dir vielmals! Das hat mir echt deutlich weitergeholfen
Wow, Applause 😉
Jetzt habe ich noch einen Fehler beim Aufruf:
Undefined subroutine &Util::disconnect called at check_vmware_api.pl line 819
In Zeile 819 steht:
Util::disconnect();
Hast Du da auch noch eine Idee?
Das Modul kenne ich nicht. perldoc Util
sagt bei mir:
perlutil - utilities packaged with the Perl distribution
die funktion disconnect() ist da jedoch nicht beschrieben, wahrscheinlich ist das proprietär. Guck mal warum die Funktion aufgerufen wird, evntl. kann man darauf auch verzichten. MFG
Das Modul kenne ich nicht.
perldoc Util
sagt bei mir:perlutil - utilities packaged with the Perl distribution
die funktion disconnect() ist da jedoch nicht beschrieben, wahrscheinlich ist das proprietär. Guck mal warum die Funktion aufgerufen wird, evntl. kann man darauf auch verzichten. MFG
Ich vermute, dass diese Funktion(en) mit der Installation vom VMWare vSphere CLI dazukommen.
Jetzt ist im Installationsverzeichnis vom VMWare vSphere CLI auch ein Perl-Verzeichnis, zwar ohne bin, aber mit den Verzeichnissen apps und lib. Kann ich bei Perl vielleicht die Suche nach den Modulen erweitern und in beiden Verzeichnis-Strukturen suchen lassen? Oder hätte ich Perl in das Perl-Verzeichnis vom VMWare-vSphere CLI installieren müssen? Oder kann ich die "einfach" die beiden Verzeichnisse apps und lib in die Verzeichnisse der Perl-Installation integrieren?
Moin Klaus,
Kann ich bei Perl vielleicht die Suche nach den Modulen erweitern und in beiden Verzeichnis-Strukturen suchen lassen?
Viele Grüße
Robert
Frage: Wohin hat ppm das Modul Crypt::SSLeay installiert? Wenn es ein Perl für Windows ist, liegt diese Installation in C:\Perl\site\lib\auto\Crypt\SSLeay
wo es eine SSLeay.dll
geben sollte. Ebenso gibt es weiter oben ein Perl/bin Verzeichnis und das ist Dein aktuelles Perl.
Wenn Applications wie VMWare ihre Module woanders hintun ist das völlig in Ordnung, ein Deiner main kannst Du ja den lib Path beliebig erweitern. Musst nur gucken daß es keine Versionskonflikte gibt. MFG
ppm repo
zeigt konfigurierte Repositories. Füge diese hier
http://www.bribes.org/perl/ppm/
hinzu. Altenative: ppd und zip Datei download und local installieren. ppm help
MFG