Ankündigung

Einklappen
Keine Ankündigung bisher.

executeCommandLine mit Rückgabewert

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    executeCommandLine mit Rückgabewert

    Hallo zusammen,

    ich möchte über eine Regel einen etwas längeren Linux Command ausführen. Aber möchte das Ergebniss in einer Variable in der Regel speichern.

    Gibt es eine Möglichkeit wie das funktioniert ?

    Die executeCommandLine bietet keinen Rückgabewert.


    Meine Idee, was nicht geht:
    rule "Status"
    when
    Item Test received update ON
    then
    var String Result=executeCommandLine("langer Command")
    ...

    end

    #2
    Hi,

    probier mal...

    Code:
    rule "Status"
    when
    Item Test received update ON
    then
    
    var String res
    
    command = "/pfad/zum/script/oder/command"
    
    res = executeCommandLine(command, 2000)
    bei mir funktioniert dies zumindest...

    Kommentar


      #3
      Ich habs mal versucht:

      Code:
      rule "TV_Control"
          when
      Item TV_Test received update ON
          then
          var String com
          var String ret
          TV_Control.sendCommand("-")
          com = "echo 'scan '| cec-client -s -d 1 | grep -iE '(power|currently active source)' |cut -d ':' -f 2 | sed '2d'| sed '2d' | sed ':a;N;$!ba;s/\n/; /g'| tr -d '\t\n\r' |  cut -d '(' -f1 | tr -d ' '"
          println(">>Testrule: " + executeCommandLine(com, 200000))
          ret=executeCommandLine(com, 200000)
          TV_Control.sendCommand(ret)
          end
      Allerdings hat TV_Control dann den Wert:
      Code:
      "scan |" cec-client -s -d 1 | grep -iE "(power|currently active source)" |cut -d : -f 2 | sed 2d| sed 2d | sed ":a;N;$!ba;s/ /; /g|" tr -d | cut -d ( -f1 | tr -d
      Das ist eig. der ursprüngliche Befehl nur das ' durch " ersetzt wurde.

      Irgendwas läuft da falsch

      Kommentar


        #4
        Du wirst irgendwo einige Zeichen escapen müssen (ja, ich weiß, super genau)
        Ich fange in einem solchen Fall immer mit einem einfachen String an, den ich dann Stück für Stück aufbaue, bis der String korrekt ist.

        Der erste Kandidat ist auf jeden Fall der \ der zu sed gehört, der fehlt ja schon mal in Deinem Ergebnisstring.

        Kommentar


          #5
          Hab den Befehl umgebaut nun läuft es
          Vielen Dank

          Kommentar

          Lädt...
          X