Parameter von WinNUT an batch Datei übergeben

  • Guten Morgen,


    ich habe derzeit ein kleines Problem und hoffe, dass ihr mir weiterhelfen könnt.


    Was möchte ich gerne:
    Wenn die USV meldet, dass der Strom weg ist, soll über ein cURL Befehl ausgeführt werden. Dieser schickt eine Info mit dem Inhalt "ONLINE" oder "OFFLINE".


    Wie ist es bisher realisiert:
    Die QNAP fungiert als USV Master, auf einem Windows 10 PC ist WinNUT installiert.

    In der config wurde folgende Zeile eingefügt:


    Code
    NOTIFYMSG ONLINE "Netzbetrieb"
    NOTIFYMSG ONBATT "Batteriebetrieb"
    
    NOTIFYCMD "C:\\batch.bat %NOTIFYMSG"


    Soweit sogut. Mein Problem aber:
    Die Batch Datei wird sauber ausgeführt, jedoch wird die Variable "NOTIFYMSG" nicht übermittelt. Bzw. wird nicht der Inhalt der Variable (Netzbetrieb oder Batteriebetrieb) übermittelt, sondern nur der Text "%NOTIFYMSG".


    Wie bekomm ich denn den Befehl NOTIFYCMD dazu, dass er mir den Inhalt der Variable ausspuckt?

    Übrigens: Ich habe auch schon die Variable %s (sollte ja eigentlich die USV zurückgeben) versucht. Auch kein Erfolg.


    Habt ihr eine Idee?

  • Verschiedene ^^...

    1. Von welcher "config" redest Du? Ich finde in meiner Winnut Installation keine derartige Möglichkeit Variablen zu erstellen!?

    2. Wie hast Du überprüft, ob die Variable überhaupt den gewünschten Wert übernimmt?

    3. Hast Du die Variable in der erweiterten Systemsteuerung definiert?


    Gruss

  • Hallo,


    ja, da gebe ich dir natürlich recht, ich kann nicht sicher sagen, ob die Variable NOTIFYMSG überhaupt abrufbar den Wert ausgibt, den ich gerne hätte. Das hätte ich einfach mal probiert, in irgendeiner Variable muss der Text ja abgespeichert sein, sonst könnte er im Log auch nicht angezeigt werden.


    Aber die Variable %s ist ja in der config definiert:

    Code
    # NOTIFYMSG ONLINE "UPS %s is getting line power"
    # NOTIFYMSG ONBATT "Someone pulled the plug on %s"
    #
    # Note that %s is replaced with the identifier of the UPS in question.

    Und selbst die Variable %s wird mir nicht übertragen :/


    Zu 3. nein wurde nicht definiert. Ich will die Variable ja nicht außerhalb des WinNUT verwenden, WinNUT soll nur den Inhalt der Variable direkt im Befehl weitergeben

  • Nochmals die Frage: von welcher config redest Du? Ich finde in meiner WinNUT Installation nichts dergleichen.

    Wo ist diese Datei?

    Ich finde auch nichts, was %s beschreibt!? :/


    Gruss

  • Die gibt es bei mir nicht!?

    Welche WinNUT Version läuft bei Dir? Ich habe die v2.07722.30975 installiert.


    Gruss

  • Tatsächlich! :(


    Ich habe den WinNUT Client von Github.

    Und auch da gibt es schon eine neuere (Beta) Version.


    Dann fällt mir dazu erst mal nichts mehr ein.


    Gruss


    Edit: Die Beta Version läuft bei mir nicht. Sie läßt sich installieren, eim Aufruf gibt es dann aber eine Fehlermeldung.

    bigwig :Gibt es denn bei Deinem WinNUT Client eine CLI Bedienung, mit der man USV Daten abfragen kann?

    2 Mal editiert, zuletzt von FSC830 ()

  • FSC830 nein der Client hat keine CLI Bedienung, scheint sich rein darauf zu konzentrieren, bei bestimmten Situationen aktionen auszuführen (PC herunterfahren, Dateien ausführen, Log Datei schreiben)


    Aber mein Problem habe ich soweit gelöst, das möchte ich natürlich auch niemandem vorenthalten:


    Änderung der Message bei den Zuständen Batteriebetrieb bzw. Netzbetrieb:


    Code
    NOTIFYMSG ONLINE "Netzbetrieb"
    NOTIFYMSG ONBATT "Batteriebetrieb"


    Setzen der Flags für die Zustände (somit werden mit dem EXEC Befehl auch die Parameter mit übergeben, ohne dass diese explizit übergeben werden müssen:


    Code
    NOTIFYFLAG ONLINE EXEC+SYSLOG
    NOTIFYFLAG ONBATT EXEC+SYSLOG


    Aufrufen der Batch Datei:


    Code
    NOTIFYCMD "C:\\batch.bat"


    Durch das setzen der EXEC Flag wird anscheinend automatisch der Befehl batch.bat + message gesendet