auf meinem alten Server liefen mein SAP Check`s noch wunderbar aber nach dem ich nun (fragt lieber nicht warum …) einen neuen Server aufsetzen mußte bekomme ich folgenden Meldung:
Can’t locate SAPNW/Rfc.pm in @INC
Fehler
Can’t locate SAPNW/Rfc.pm in @INC (you may need to install the SAPNW::Rfc module) (@INC contains: /omd/sites/main/local/lib/perl5/lib/perl5 /omd/sites/main/lib/perl5/lib/perl5/x86_64-linux-gnu-thread-multi /omd/sites/main/lib/perl5/lib/perl5 /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.36.0 /usr/local/share/perl/5.36.0 /usr/lib/x86_64-linux-gnu/perl5/5.36 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl/5.36 /usr/share/perl/5.36 /usr/local/lib/site_perl)
Als Site User die Pfade in der ~etc/enviroment eingetragen.
Wo ist denn dein SAPNW-Verzeichnis?
Für Perl gibt es die Variable PERL5LIB (wie bei PATH mit Doppelpunkt getrennte Pfade).
In den Pfaden wird zusätzlich zu den “eingebauten” Pfaden gesucht. DIe Variable ist normalerweie nicht gesetzt.
Lass die Variable mal auf ein Verzeichnis über SAPNW zeigen und mach sicherheitshalber
Ich erinnere mich an meine Icinga Tage mit (zu) vielen Perl-Check-Scripts.
War immer ein großer Schmerz im Hintern.
VIelleicht kannst du die PERL5LIB direkt im Befehl angeben? PERL5LIB=/betrieb/nwrfcsdk/lib /path/to/plugin.pl --arguments
Leider nicht die Lösung … ich schau am Montag mir das nochmal an …
aber mit den “alten” Tagen hast du recht das ganze SAP Check Konstrukt basiert immer noch auf der Basis von Gerhard Laußer und leider habe ich noch keine andere Lösung (Build in wäre schön) gefunden
Wenn du was auf Python Basis kennst fände ich das auch besser aber leider basiert das nun mal auf PERL
Ich nehme an die built-in Funktionalität, die wir haben, hast du dir schon angesehen? Ich habe da gerade das Linux Plugin im Sinn, habe damit aber selbst noch nicht gearbeitet.
zurück von #CMKConf10 habe ich gestern angefangen alles auf pyrfc umzubauen das geht recht easy habe ich festgestellt
Code
!/usr/bin/python3
import sys
from pyrfc import Connection
def get_function_module_status(conn, func):
# Call the function module
result = conn.call(func)
# Return the status
return result
# Check if the correct number of command line arguments is provided
if len(sys.argv) != 7:
print("Usage: python sap_connection.py <ashost> <sysnr> <client> <user> <passwd> <function_module>")
sys.exit(1)
# Extract the connection parameters from the command line arguments
ashost = sys.argv[1]
sysnr = sys.argv[2]
client = sys.argv[3]
user = sys.argv[4]
passwd = sys.argv[5]
function_module = sys.argv[6]
# Define the connection parameters
conn_params = {
'ashost': ashost,
'sysnr': sysnr,
'client': client,
'user': user,
'passwd': passwd
}
# Establish the connection
conn = Connection(**conn_params)
# Call the function module and get the status
status = get_function_module_status(conn, function_module)
## Print the status
#print(status)
#message=(status)
## Drucken Sie die Elemente der Nachricht
#print("Message Type:", message['MESSAGE']['TYPE'])
#print("Message ID:", message['MESSAGE']['ID'])
#print("Message Number:", message['MESSAGE']['NUMBER'])
#print("Message Text:", message['MESSAGE']['MESSAGE'])
#print("Log Number:", message['MESSAGE']['LOG_NO'])
#print("Log Message Number:", message['MESSAGE']['LOG_MSG_NO'])
#print("Message V1:", message['MESSAGE']['MESSAGE_V1'])
#print("Message V2:", message['MESSAGE']['MESSAGE_V2'])
#print("Message V3:", message['MESSAGE']['MESSAGE_V3'])
#print("Message V4:", message['MESSAGE']['MESSAGE_V4'])
#print("Parameter:", message['MESSAGE']['PARAMETER'])
#print("Row:", message['MESSAGE']['ROW'])
#print("Field:", message['MESSAGE']['FIELD'])
#print("System:", message['MESSAGE']['SYSTEM'])
#print("Return Code:", message['RETURNCODE'])
#
## Drucken Sie die Elemente der Nachrichtentabelle
#for i, tab in enumerate(message['MESSAGE_TAB']):
# print(f"Message Tab {i+1}:")
# print("\tType:", tab['TYPE'])
# print("\tID:", tab['ID'])
# print("\tNumber:", tab['NUMBER'])
# print("\tMessage:", tab['MESSAGE'])
# print("\tLog Number:", tab['LOG_NO'])
# print("\tLog Message Number:", tab['LOG_MSG_NO'])
# print("\tMessage V1:", tab['MESSAGE_V1'])
# print("\tMessage V2:", tab['MESSAGE_V2'])
# print("\tMessage V3:", tab['MESSAGE_V3'])
# print("\tMessage V4:", tab['MESSAGE_V4'])
# print("\tParameter:", tab['PARAMETER'])
# print("\tRow:", tab['ROW'])
# print("\tField:", tab['FIELD'])
# print("\tSystem:", tab['SYSTEM'])
#
if status['RETURNCODE'] == 0:
print("0 \" System: \"", status['MESSAGE']['SYSTEM'],")
# exit 0
elif status['RETURNCODE'] == 2:
print("CRITICAL")
# return(2)
mal schauen das ich das noch als Plugin umbaue und die Parameter dann via GUI und PW Safe übergeben kann da bin ich allerding immer noch nicht so fit drin aber im Moment als Classic Check geht es schon mal.
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed. Contact an admin if you think this should be re-opened.