NEWS
Skript EXEC geht nicht
-
Bitte um Hilfe, versuche schon mehre Stunden, es geht nicht.
Kommando "exec" erlauben ist drin
Windows System, Kommandozeile geht der Befehl.
Weis nicht wo der Fehler ist.
Der Befehl shutdown /s /t 10 /m 192.168.1.2 geht es auch nicht, zeigt Zugriff verweigert an.
Beiexec('cmd.exe /c start "psshutdown.exe -r \\192.168.1.2 -u xxxxxx -p xxxxxx"', function(err, stdout, stderr) { if (err) { log(stderr,'error'); return; } });
-
@namrenner unter welchem Benutzer läuft ioBroker unter Windows? Also der Dienst?
Wenn es der Benutzer SYSTEM ist, dem ist es explizit verboten Prozesse unter anderem Namen auszuführen.
Tipp 2 ist vor demcmd.exe
mal ein echo setzen und am Ende eine Umleitung in eine TextdateiC:\temp\test.txt\
um zuschauen was drüben tatsächlich ankommt. Du hast das hinterstart
in" "
gesetzt, kann sein das er das dann als ein Paramater übergibt (was er ja auch soll), die frage ist ob das auch so wieder auseinander geteilt wird. -
@bananajoe said in Skript EXEC geht nicht:
C:\temp\test.txt\
Hallo,
Benutzer steht: NT SERVICE\iobroker(SmartHome)
mit dem ~~echo und C:\temp\test.txt~~
kannst mit genauer schreiben, sorry, danke -
@namrenner
Erstelle einen OrdnerC:\temp\
und ändere ggf. die Berechtigungen das der Benutzeriobroker
schreiben darf.exec('echo cmd.exe /c start "psshutdown.exe -r \\192.168.1.2 -u xxxxxx -p xxxxxx" >c:\temp\test.txt', function(err, stdout, stderr) { if (err) { log(err,'err'); log(stderr,'stderr'); log(stdout,'stdout'); return; } });
-
@bananajoe
bekomme Zugriff verweigert
haben den Ordner für jeder Berechtigung geben -
habe anderen Ordner genommen D:\Iobroker.
Bekomme keine Meldung und den Ordner ist auch keine Datei test.txt drin -
@namrenner mir ist heute beim Kochen noch was dazu eingefallen:
psshutdown.exe
ist doch aus der Sysinternalsuite? da muss man doch einmal die Lizenzbedingungen annehmen - und das kannst du nicht. Du müsstest diepsshutdown.exe
einmal als Benutzeriobroker
starten und die Bedingungen annehmen.Die Lizenzbedingungen muss man einmal pro
*.exe
annehmen -
@bananajoe
Danke, leider habe ich wenig Erfahrung, wie mache dies nun?Was komisch ist, wenn ich per Skript in js, kommt nichts, per blockly, ist die Datei test.txt da, aber der Befehl geht nicht.
-
@namrenner was steht drin der datei?
Und mangels Testsystem (ich bin zwar eingefleischter Windows-Benutzer, aber ioBroker läuft unter Linux) kann ich dir auch keine Schritt-für-Schritt Anleitung ermitteln.
Klick diepsshutdown.exe
mal an das die markiert ist, drück die linke Shift (Großschreib-)taste und dann ein Rechtsklick.
Im Menü gleich ziemlich oben sollte einAls anderer Benutzer ausführen
erscheinen. Und da nimmst du den ioBroker-Benutzer -
@namrenner sagte in Skript EXEC geht nicht:
@bananajoe
Danke, leider habe ich wenig Erfahrung, wie mache dies nun?Was komisch ist, wenn ich per Skript in js, kommt nichts, per blockly, ist die Datei test.txt da, aber der Befehl geht nicht.
Probiere mal das im JS aus:
exec('cmd.exe /c dir c:\\temp >c:/temp/test.txt', function(err, stdout, stderr) { if (err) { log(err,'err'); log(stderr,'stderr'); log(stdout,'stdout'); return; } });
Bei mir wird hier eine Datei mit dem Inhalt des Ordners angelegt. Das Problem scheint der Parameter start im Befehl "exec('cmd.exe /c start" zu sein. Sobald ich diesen Parameter mit benutze, hängt sich der cmd Process auf und kann nur noch über den Task gekillt werden.
-
@sokomoto said in Skript EXEC geht nicht:
cmd.exe /c dir c:\temp >c:/temp/test.txt
Hallo, danke, so ging es nicht.
Aber so geht es:exec('cmd.exe /c dir "c:/temp" >c:/temp/test.txt', function(err, stdout, stderr) { if (err) { log(err,'err'); log(stderr,'stderr'); log(stdout,'stdout'); return; } });
-
psshutdown geht nicht, Datei leer und kann auch nicht mehr die Datei löschen.
Beim aktivieren steht:
javascript.0 (22836) script.js.Haus.Skript_1: Unknown severity level "err" by log of [Error: Command failed: cmd.exe /c psshutdown >c:/temp/test3.txt Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird. ]scheint das die ganze Zeit was versucht, wie bekomme dies beendet?
-
@bananajoe
das Problem ist, der Benutzter ioBroker gibt es nicht in Windows. -
Habe nun ioBroker auf mein Systen Benutzter Dienst gestartet, nun geht es, aber
wieder ein anderer Fehler mit:exec("psshutdown -r \\192.168.1.2", function(err, stdout, stderr) { if (err) { log(err,'err'); log(stderr,'stderr'); log(stdout,'stdout'); return; } });
javascript.0 (4084) script.js.Haus.Skript_1: Unknown severity level "err" by log of [Error: Command failed: psshutdown -r \192.168.1.2 ]
Problem ist das er nicht "\\192.168.1.2" an nimmt, sondern \192.168.1.2, wie kann dieses Problem lösen?
-
@namrenner
\
ist ein Escape-Zeichen in Javascript. Du must\\\\
schreiben, um zwei\\
zu erhalten. -
@namrenner sagte in Skript EXEC geht nicht:
psshutdown geht nicht, Datei leer und kann auch nicht mehr die Datei löschen.
Beim aktivieren steht:
javascript.0 (22836) script.js.Haus.Skript_1: Unknown severity level "err" by log of [Error: Command failed: cmd.exe /c psshutdown >c:/temp/test3.txt Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird. ]scheint das die ganze Zeit was versucht, wie bekomme dies beendet?
Das geht nur über den Taskmanager...
...da hängt der cmd process.
-
@alcalzone danke, nun geht es
-
Also es funktioniert jetzt?
Wenn ich so drüber nachdenke hatten wir beim letzten mal unter Windows glaube ich den ioBroker-Dienst unter einen anderem Benutzer starten lassen, also dem Anmeldebenutzer -
@bananajoe ja, Danke