NEWS
[gelöst] Exec Befehl funktioniert nicht mehr
-
Hallo, ich hatte folgenden Excel Befehl schon mal am Laufen. Leider funktioniert er nicht mehr.
Keine Ahnung warum.Ausgabe = "Datensicherung wird ausgeführt"; setState(obj.deviceId + ".Commands.speak", Ausgabe); log("1"); exec('/BatFiles/CopyTest.bat', DatensicherungCallback); log("2"); function DatensicherungCallback(err, stdout, stderr) { log(stderr); log(stdout); log(err); // Hier könnten Fehler abgefangen werden. }
Die Debug Logs "1" und "2" werden ausgegeben.
allerdings wird die Bat datei nicht aufgerufen.
alle logs in der function DatensicherungCallback werden auch nicht geschrieben. -
@ben1983 Hallo? Keine eine Idee?
Ich bin echt am Verzweifeln.
Vorgestern ging es einwandfrei und jetzt tut sich gar nichts. -
@ben1983 Und was wurde in dem Zeitraum am System/Script geändert?
-
@wendy2702 Nichts, das ist es ja.
-
@ben1983 welche Rechte hat die .bat Datei?
-
@ben1983 Was sagt denn beim Ausführen das globale Log?
Im JavaScript-Adapter ist der Haken bei "exec" noch drin?Als welcher Benutzer wird ioBroker ausgeführt? Hat dieser Benutzer rechte auf den Ordner?
und da es nach Windows aussieht - gibt an der Stelle doch mal den ganten Pfad ein, also inklusive Laufwerksbuchstaben etc.
Und vielleicht mit der cmd.exe, alsocmd.exe /c D:\BatFiles\CopyTest.bat
Ist jetzt nur geraten, mach zwar viel mit Windows aber ioBroker läuft dann doch unter Linux in einer VM
-
@bananajoe
Im Log steht bei meiner Version nichts und bei deiner Version das hier:javascript.0 (5364) script.js.Alexa.Routinen: {'killed':false,'code':1,'signal':null,'cmd':'cmd.exe /c C:BatFilesCopyTest.bat'}
-
@ben1983 müssen die \ eventuell "escaped" werden?
wie es aussieht fehlen die ja.Ersetz die mal durch jeweils doppelte.
-
@bananajoe Jetzt wird keine Fehlermeldung mehr ausgegeben,
aber es passiert genauso wenig wie mit meiner altern Version. --> Nichts. -
Nimm mal als Befehl
cmd.exe /c echo C:\BatFiles\CopyTest.bat >nureintest.txt
danach musst du mal suchen wo er die nureintest.txt angelegt hat, eventuell im ioBroker JavaScript Verzeichnis.
In der Datei sollte dann C:\BatFiles\CopyTest.bat stehen - oder auch nicht. Damit könnte man den genauen Befehl ausklingen bzw. sehen was denn überhaupt ankommt. -
@bananajoe said in Exec Befehl funktioniert nicht mehr:
cmd.exe /c echo C:\BatFiles\CopyTest.bat >nureintest.txt
Er hat die Datei direkt im ioBroker Verzeichnis angelegt
-
@ben1983 sagte in Exec Befehl funktioniert nicht mehr:
@bananajoe said in Exec Befehl funktioniert nicht mehr:
cmd.exe /c echo C:\BatFiles\CopyTest.bat >nureintest.txt
Er hat die Datei direkt im ioBroker Verzeichnis angelegt
Und was steht drin?
Das erstellen der Datei ist schon mal ein Beweis das es überhaupt funktioniert -
@bananajoe ich habe es mit doppelten Backslash eingetragen und dann steht das drin
C:\BatFiles\CopyTest.bat
Aber er ruft diese datei nicht auf. / Bzw. wenn ich die datei eigenhändig anklicke geht es, aber aus dem skript heraus nicht.
-
@ben1983
lass ihn mal (hinter cmd.exe /c ) statt des echo Befehls folgendes ausführen:whoami
wieder mit Umleitung in die Textdatei
-
@bananajoe said in Exec Befehl funktioniert nicht mehr:
whoami
ergebnis:{'killed':false,'code':1,'signal':null,'cmd':'cmd.exe /c whoami C:\\BatFiles\\CopyTest.bat >nureintest.txt'}
-
cmd.exe /c whoami >testwhoami.txt
whoami sollte ausgeben als welcher Benutzer das Skript ausgeführt wird.
-
@ben1983 Ohne den Befehl meiner Datei steht folgendes in der Datei:
nt service\iobroker(smarthome)
-
@ben1983 sagte in Exec Befehl funktioniert nicht mehr:
@ben1983 Ohne den Befehl meiner Datei steht folgendes in der Datei:
nt service\iobroker(smarthome)
so, und dieser Benutzer führt deine Batchdatei aus.
Hat der genügend Rechte dafür? Und auch die Rechte alles zu tun was in der Batch steht? -
Du könntest auch hinter deinen Batchbefehl auch so eine Umleitung in eine Textdatei setzen, dann könntest du eventuelle Fehlermeldungen lesen
-
@bananajoe Es gibt aber keinen Benutzer Service. ??? Es gibt an diesem Rechner nur einen User und das bin ich.
und ich bin als Admin deklariert.