JSON mit check_http

This forum was archived to /woltlab and is now in read-only mode.
  • Hallo,


    ich versuche, mich auf einer applikation mittels json anzumelden und zu messen wie lange das dauert. Mit curl bekomm ich es hin:


    Code
    1. curl -H "Content-Type: application/json" -X POST -d '{"username":"abc@xyz.com","password":"aaazzz"}' https://blah.azurewebsites.net/api/services/auth/v1/login
    2. {"token":"MjI3OTlEQ0YxMjdCNzE0NEEyQjI5RDg1234IyQkNBN0MtbjEud2ViMDI="}




    mit check_http bekomm ich das nicht.



    Was mach ich da falsch? Egal wie ich den login string encode/escape, und egal ob ich basic auth mit -a versuche, ich bekomme 401.

  • Wer ich nicht schlau draus. Was macht accept */* ? Ist soweit ich das sehe der einzige unterschied bis auf den User-Agent und das wird wohl wurscht sein.

  • Probiers doch mal dass du den Header "Accept: */*" mitschickst - vielleicht will die Azure-API das explizit gesetzt haben. Bei der Icinga 2 API etwa musst du bei POST-Requests explizit "Accept: application/json" mitschicken, damit der Server den Request-Body entsprechend interpretieren kann.

  • Selbes Resulat:


  • Ok, mist.


    -T fügt "Content-Type:" von selber hinzu. Zeile 7 war falsch.


    Quote

    Content-Type: Content-Type: application/json

    Jetzt gehts...


    Code
    1. -T 'application/json'

    statt

    Code
    1. -T 'Content-Type: application/json'
  • Jetzt würde ich diesen Token gerne wo zwischenspeichern und für den nächsten Check weiterverwenden, wie geh ich das jetzt an?

  • Das würde mit Env gehen, obwohl ich da Bauchschmerzen mit hätte. Besser wäre es in eine Datei zu speichern. Ganz nach dem Motto:


    curl FLAGS > /path/to/file


    Der nächste Check könnte dann den Inhalt rauslesen. Nicht gerade optimal, aber es würde gehen.

  • Ich bin mir ehrlich gesagt nicht sicher, ob check_http dann das richtige Plugin für dich ist. Klar kannst du dir den Body irgendwie zusammenbasteln (etwa in der Icinga 2 DSL mit globalen Konstanten für Username/Password), aber ggf. bist du da mit Python und requests deutlich schneller.


    Nur so als Idee mit Icinga 2:



    Referenz: https://www.icinga.com/docs/ic…ary-reference/#jsonencode