Errorlevel auswerten

  • Hallo,

    ich bin dann mal hier der Neue. Hallo erstmal.

    Habe folgendes Skript geschrieben:

    [autoit]

    $returncode=999
    if $CmdLine[0] then $returncode=$cmdline[1]
    ;msgbox(0,"Exit Code","Test vom Rückgabewert für Exit, aktuell " & $returncode)
    exit($returncode)

    [/autoit]

    Und so starte ich das Programm:

    Code
    startemich.exe
    echo %ERRORLEVEL%
    0
    Code
    cmd /c startemich.exe
    echo %ERRORLEVEL%
    999

    Und der zweite Aufruf ist der richtige. Nur ist es ein Nagios-Plugin und über den Parameter cmd /c kann ich es dort nicht prüfen.

    Hoffe jemand hat einen Workaround für mich, wie ich das entsprechend ändern muß.

    Viele Grüße
    Glencairn

  • Hi,

    danke für die Antwort.

    Wenn ich das Programm ohne Parameter aufrufe, so ist der Errorlevel 999 und wenn ich mit Parameter aufrufe, kann ich den Errorlevel beeinflussen. Das Skript ist nur ein Beispielskript für meine Anwendung.

    Ich möchte danach, wenn das funktioniert, mir ein Nagios Plugin schreiben und Nagios kann den Errorlevel des Programmes auswerten (0=ok,1=warning,2=critical).

    Oder anderst ausgedrückt, ich möchte später ein Windows-Plugin für Nagios schreiben und das Ergebnis möchte ich in Nagios auswerten.

    War das jetzt verständlich? :tier:

    Gruß
    Glencairn

    • Offizieller Beitrag

    HI,

    die Frage ist, ob du wirklich den ReturnCode des Scripts nehmen willst. Ich würde lieber mit Autoit auswerten, ob die Verarbeitung geklappt hat und dann auch in Autoit darauf reagieren und den Returnwert setzen.

    Diesen kannst du z.B. in eine Datei schreiben, etc.

    Das Programm an sich sollte aber immer mit ReturnCode 0 beendet werden.

    So long,

    Mega

  • Mh,

    prima Reaktionzeit hier. Gefällt mir.

    Wenn ich jetzt z. B. ein Skript schreiben wollte, dass mir die Anzahl der Dateien in einem Verzeichnis aufführen soll (habe sowas als SWF Datei), dann kann ich aber nur über den Returnwert was an Nagios übergeben. Habe mir das ganze mal in C++ angesehen und da geht es. Genauso wie ich es möchte.

    Code dazu? Vielleicht nützt es jemanden was?

    Gruß
    Glencairn

  • Hi,

    ich möchte von meinem Nagios-Server über NRPE ein Programm bzw. Skript auf dem Windowsrechner aufrufen und dort möchte ich als Rückgabe den Errorlevel haben.

    check_nrpe wäre auf Nagios Seite das Stichwort und das läuft auch bereits. Auch die Rückmeldung von Parametern geht, nur nicht, wenn es mit auto-it.de skriptiert ist.

    Bin dann mal auf autohotkey gestossen, aber das scheint ähnlich zu sein. Werde es mal ausprobieren, ob ich da einen Rückgabewert erhalte, sonst muß ich auf Scripting Host umsteigen :( - zumindest was die Nagios Plugins angeht.

    CU
    Glencairn

    • Offizieller Beitrag

    HI,

    okay. Jetzt verstehe ich schon mehr. Du hast ein Server, der überwacht Clieten mit Hilfe dieses Nagios. Du installierst einen Dienst auf den Clienten und kannst dadurch skripte auf den Clienten starten.

    Nun möchtest du allerdings ein Autoit-Skript starten und den Returnwert zurückbekommen.

    Warum mappst du dir nicht einfach ein Laufwerk auf dem Server und schreibst da in aller Ruhe ein schönes Log rein.

    Übringend die Dinge, die die vorgefertigten Skripte können, kann Autoit auch.

    So long,

    Mega

  • Ach so, mir ist da noch die Hilfe in die Finger gekommen. Dort steht - und ich zitiere -

    [optional] Integer, der den Rückgabewert des Skriptes setzt. Dieser Wert kann von Windows oder über die DOS-Variable %ERRORLEVEL abgefragt werden. Standard ist 0. Skripte setzen das Errorlevel normalerweise auf 0, wenn das Skript ordnungsgemäß ausgeführt wurde. Werte größer als 0 signalisieren im Allgemeinen Fehler in der Skriptausführung.

    Also müsste es doch gehen, wenn ich mein o. g. Script so ausführe - ohne cmd /c.

    Viele Grüße und gute Nacht ;)
    Glencairn