API HP MSA 2312 XML "Accesso non autorizzato richiesto"

Sto cercando di scrivere un plugin Nagios personalizzato per monitorare un HP MSA2312fc tramite l'API XML HTTP. Posso accedere correttamente al sistema tramite / api / login / {login_hash} ma sempre get l'errore "Accesso non autorizzato richiesto" quando cerchi di get alcuni dati (cioè via / api / show / system). Ho provato i comandi su MSA diversi ma è sempre lo stesso errore.

# Successful login <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RESPONSE> <OBJECT basetype="status" name="status" oid="1"> <PROPERTY name="response-type">success</PROPERTY> <PROPERTY name="response-type-numbersc">0</PROPERTY> <PROPERTY name="response">deb9b907d11459757af645bd859e01aa</PROPERTY> <PROPERTY name="return-code">1</PROPERTY> </OBJECT> </RESPONSE> # Error <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RESPONSE> <OBJECT basetype="status" name="status" oid="1"> <PROPERTY name="response-type">error</PROPERTY> <PROPERTY name="response-type-numbersc">1</PROPERTY> <PROPERTY name="response">Unauthorized access requested</PROPERTY> <PROPERTY name="return-code">6</PROPERTY> </OBJECT> </RESPONSE> 

Posso già monitorare con successo un HP MSA P2000 G3 tramite l'API XMl senza alcun problema.

Sto utilizzando Python 2 per il plugin. Allegato è codice pertinente per l'accesso e la lettura dei dati da un MSA P2000 G3:

 import hashlib import urllib2 from xml.etree import ElementTree # Log into MSA def msa_login(hostname, username, password): def create_login_hash(username, password): login_string = "{0}_{1}".format(username, password) return hashlib.md5(login_string).hexdigest() login_hash = create_login_hash(username, password) url_login = "http://{0}/api/login/{1}".format(hostname, login_hash) req_login = urllib2.Request(url_login) response_login = urllib2.urlopen(req_login) #print(response_login.read()) login = ElementTree.parse(response_login).getroot() # Get sessionid for property in login.findall('./OBJECT/PROPERTY'): if property.attrib['name'] == 'response-type' and property.text != 'success': print("CRITICAL - Couldn't login to MSA") exit(NAGIOS_CRITICAL) if property.attrib['name'] == 'response': return property.text # Read system data def parse_system(hostname, sessionid): url_system = "http://{0}/api/show/system".format(hostname) req_system = urllib2.Request(url_system) req_system.add_header('sessionKey', sessionid) response_system = urllib2.urlopen(req_system) system = ElementTree.parse(response_system).getroot() [...] # parsing data 

Può qualcuno mi dà un suggerimento perchè ottengo sempre il messaggio non autorizzato? O ha uno snippet di codice di lavoro? So che Telnet ha una modalità API XML, ma preferisco non utilizzarlo per vari motivi.

  • Nagiosgrapher non elaborare correttamente i dati
  • Differenti intervalli di notifica quando il servizio è critico
  • Invia tutte le uscite in output a / dev / null
  • Nagios comportmento irregolare quando invia messaggi di notifica
  • Notifica quando alcuni servizi raggruppati falliscono in Nagios
  • Ricerca di OID di livello toner per nagios snmp per Brother 9460
  • Dove definire il command in nagios
  • Modificare il formato dei file per i registri archivi Nagios per utilizzare un formato di data diverso?
  • One Solution collect form web for “API HP MSA 2312 XML "Accesso non autorizzato richiesto"”

    Devi mandare il cookie nell'intestazione:

     Key Value Cookie wbisessionkey=ee7426964a6d14788ba86f77764733bf; wbiusername=monitoruser 

    qualcosa di simile (codice non testato):

     cookie = "wbiusername={0}; wbisessionkey={1}".format(username,sessionid); req_system.add_header('Cookie', cookie); 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.