NEWS
[gelöst] Batchdatei ausführen??
-
Moin,
Bin neu hier im Forum und möchte mich erstmal für die coole Arbeit bedanken, die diejenigen leisten und Iobroker auf die Beine gestellt haben
Super Sache und bei mir läuft alles so wie es soll im Moment.
Nun zu meinen Anliegen.
Ich habe ein Batch Datei die von dem Windows Aufgabeplaner immer Nachts ausgeführt wird. Iobroker Stop Backup aufs NAS und Iobroker wieder starten.
Das funktioniert soweit super.
Nun kam mir diese Idee das ganze auf UPDATES zu erweitern. Die Datei ist soweit fertig und funktioniert auch.
Das was ich möchte wäre diese Datei über ein script oder ähnliches auszuführen soweit dieses irgendwie möglich ist.
Das heißt ich lasse mir auf dem Tablet anzeigen wie viel Updates anstehen.Dann möchte ich eine Taste drücken und dann soll die Datei ausgeführt werden.
Iobroker stop Backup NAS Upgrade und dann wieder starten
Weiß nicht ob sowas möglich ist.Habe auch schon gegoggelt aber nichts passendes gefunden.
Auf diesem Weg schon mal vielen Dank
Mfg 8-)
Ps. Das ganze läuft auf einer Win10 Maschine (Wintel W8 Box) NodeV4
-
Aus einem Script heraus kannst du eine Batch-Datei mit
exec ausführen:
exec (cmd, callback)
Exec tut so, wie wenn du etwas in einem Terminal eingibst.
Und dieses exec kannst du über Lauschen auf einen Taster, den du per VIS ansteuerst, ausführen.
Hilft das als Ansatz?
-
Hi Solear,
Danke für die schnelle Antwort.
Hilft mir in dem Sinne weiter das ich weiss das es
Funktioniert
Habe bloss keine Ahnung vom scripten.ausser ein paar alte dos Befehle ist nicht mehr da. vielleicht existiert
Ja schon irgendwo so ein Script und man kann das hier reinstellen.
Werde mich aber auch mal reinlesen und mit dem Befehl
Exec mal bissel rumprobieren.oder einer kann schnell eins schreiben weiss ja nicht wie aufwendig so was ist
Habe ja ein paar scripte laufen da kann man ja bestimmt was draus lernen und probieren
Aber erstmal vielen dank für deine mühe
Mfg sven
-
Geht das ganze auch auf einer Linux Maschine? Also dortige sh Dateien ausführen?
Grüße
Brati
-
Geht das ganze auch auf einer Linux Maschine? Also dortige sh Dateien ausführen? `
Ja, natürlich.exec('/Pfad_zum_Script/mein_script.sh', function(err, stdout, stderr) { if (err) { log(stderr,'error'); return; } Mach was mit stdout; });
-
Hallo Paul53,
Danke für die Vorlage habe es ein "wenig" umgebaut und es funktioniert zumindest auf meinen
Testsystem. 8-)
exec("cmd.exe /c start D:backup.bat", function(err, stdout, stderr) { if (err) { log(stderr,'error'); return; } });
Also nochmal danke an Euch für die schnellen Antworten.
Fragen kommen bestimmt noch
Mfg
Sven
-
Wenn keine Rückgabe über stdout erfolgt, geht es auch mit weniger Zeilen:
exec("cmd.exe /c start D:backup.bat", function(err, stdout, stderr) { if (err) log(stderr,'error'); });
-
Danke Paul53.
Habe ich übernommen 8-) Danke
Nur noch ne frage,kann man das irgendwie machen/einstellen das das script bei einem
Neustart nicht gestartet wird sondern erst wenn ich den Taster drücke???
So wird´s ja immer neu gestartet beim Neustart und Iobroker läuft in einer schleife :?
Vielleicht habe ich es auch übersehen??
Hoffe ihr versteht was ich meine!!
Mfg
Sven
-
Moin,
So habe ihr was gefunden im Forum was ich für umgebaut habe.
Ich glaube es kam von Blufox(Danke).
createState('javascript.0.Backup', false, {name: 'Skript bei VIS Tastendruck starten'}); on('javascript.0.Backup', function (obj) { if (!obj.state.ack && obj.state.val) { exec("cmd.exe /c start D:backup.bat", function(err, stdout, stderr) { if (err) log(stderr,'error'); }); } });
So funktioniert es wie ich es will :geek: Geilomat
Man versteht immer mehr!!
Mfg
Sven
-
Von mir auch vielen Dank, hab es jetzt auch eingebaut. Kann ich mir auch den cronjob sparen :
createState('javascript.0.System.Backup', false, {name: 'Backup Skript bei VIS Tastendruck starten'}); createState('javascript.0.System.Update', false, {name: 'Update Skript bei VIS Tastendruck starten'}); setState('javascript.0.System.Backup', false); setState('javascript.0.System.Update', false); on ({ id: "javascript.0.System.Update", change: 'ne', val: true }, function(){ log ("--> Update gestartet!"); exec('/opt/update.sh', function(err, stdout, stderr) { if (err) { log(stderr,'error'); return; } }); }); on ({ id: "javascript.0.System.Backup", change: 'ne', val: true }, function(){ log ("--> Backup gestartet!"); exec('/opt/backup.sh', function(err, stdout, stderr) { if (err) { log(stderr,'error'); return; } }); });
Grüße
Brati
-
Hallo zusammen,
welches Widget ist hierfür am besten geeignet?
Finde leider nicht das passende, welches den Wert wieder auf false automatisch zurück setzt.
Über einen Tip äwre ich sehr dankbar
mfg
-
Nabend, mach das doch einfach am Ende vom Script. Grüße Brati
von unterwegs gesendet.
-
Nabend, mach das doch einfach am Ende vom Script. Grüße Brati `
Danke für den Tipp… bin ich als Anfänger nicht drauf gekommen
hab es jetzt wie folgt gelöst:
setState('javascript.0.RaspiReboot', false);
und siehe da schon klappt es
Danke