Gauge32 to int

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


    ich stehe auf dem Schlauch.

    Ich schreibe aktuell einen check unter check_mk. Ich lasse mir für eine OID einen Wert ausgeben, der in Gauge32 ist. Jetzt versuche ich diesen in python nach int zu wandeln. Das Gauge32 eigentlich unsigned int ist weiss ich. Aber da python keine unsigned types hat komme ich hier nicht weiter. Ich versuche den Wert nur durch 10 zu teilen.


    Für einen Tipp wäre ich dankbar. Ist bestimmt ganz trivial aber ich komm nicht weiter.

  • Also in den built in checks, die mit gauge32 Werten umgehen müssen, wird nur mit int() gearbeitet, wenn ich das richtig verstehe.

    h3_lanswitch_cpu

    sym_brightmail_queues

  • Laut RFC1902 hast du recht. Ist ein normaler, nicht negativer Integer mit einem Wertebereich zwischen 0 und . Da Python (theoretisch) keinen Maximalwert für numerische Variablen hat, wird es auch nicht zu einem buffer overflow kommen. Sollte also mit

    Code
    1. int_result = int(gauge32_response)/10

    problemlos funktionieren (zumindest nach gängigen Standards).

  • Danke für eure Antworten.


    Mit Tests funktioniert die Umwandlung nach int auch wunderbar. Also das eigentliche Problem ist ein anderes.

    Direkt nach der Umwandlung mit value = int(gauge32_response)/10 hat value den richtigen Wert. Sobald ich jedoch versuche das im Wato (also innerhalb der check-funktion) auszugeben, bekomme ich nur:


    UNKNOWN - invalid output from agent or error in check implementation


    vor der Umwandlung funktionierte das aber.

  • Gelöst:


    value = float ( int ( value1 ) / 100 )


    und dann im output:


    "%.1f" % value


    so funktioniert das.

    Ich Denke ich habe noch ein bisschen Nachholbedarf was die Ausgabeparameter in Python fürs Wato betrifft.