Windows Folding-PC nach Projekt-Finish herunterfahren

mattinator

Volt-Modder(in)
Ich habe mich anhand der Anfragen trotzdem mal hingesetzt und in meiner Windows 10 VM mit Cygwin ein bisschen "gescriptet".
Voraussetzung für die Nutzung ist die Installation von Cygwin unter Windows. Wenn man bei laufendem Folding-Client mit einem oder mehreren Slots mit aktiven Projekten im Finish-Modus nach der Beendigung des letzten den Rechner herunterfahren will, muss man das Windows-cmd-Script "shutdownafterfolding.cmd" ausführen. Es enthält mehrere kommentierte und einen aktivierten Aufruf des Linux-Bash-Scripts "waitfoldingprojects.sh". Das Linux-Bash-Script "waitfoldingprojects.sh" überwacht mit dem Windows-Programm "inotifywait.exe" das FAHClient-Verzeichnis und prüft bei Veränderungen der Protokolldatei log.txt deren Inhalt nach Einträgen bzgl. der Beendigung von Projekten. Das Programm verwendet zur Sicherheit die definierte Reihenfolge von drei speziellen Protokoll-Einträgen, welche nach meinen bisherigen Prüfungen momentan durch den Folding-Client für alle GPU- und CPU-Projekte verwendet werden. Sobald alle beim Aufruf übergebenen Slots ihre aktiven Projekte beendet haben, wird auch das Script beendet. Danach wird im aufrufenden Windows-Cmd-Script "shutdownafterfolding.cmd" Windows mit dem eigenen "shutdown"-Befehl heruntergefahren.
Alle Scripts basieren auf der Voraussetzung, dass sich der Folding-Client und das verwendete Cygwin in ihren Standard-Installationsverzeichnissen befinden. Wenn das nicht der Fall sein sollte, müssen die Scripts diesbezüglich angepasst werden. Nach der Installation von Cygwin müssen die drei Komponenten "shutdownafterfolding.cmd", "waitfoldingprojects.sh" und "inotifywait.exe" unterhalb des Cygwin-Basisverzeichnisses nach /usr/local/bin entpackt werden. ACHTUNG bei der Nutzung, möglicherweise wird Windows auch heruntergefahren, obwohl das so nicht gewollt ist. Natürlich erfolgt die Nutzung der Komponenten auf eigene Gefahr, Haftung für irgendwelche "Folgeschäden" übernehme ich selbtstverständlich nicht.;) Bei Fragen am besten hier posten, dann stehen die Informationen gleich allen Interessierten zur Verfügung.

EDIT 02.03.2016: vorherige Version der Tools entfernt, s. Post unten.
 
Zuletzt bearbeitet:
... vielen Dank dafür :daumen:
Hast Du evtl. eine Idee, wie man per batch oder ähnlich zu einem bestimmten Zeitpunkt "finishen" setzen kann?
 
Unter Linux funktioniert z.B. für Slot 00 folgendes:
Code:
echo "finish 00\nexit" | telnet localhost 36330
Das Telnet unter Windows ist da scheinbar nicht so komfortabel. Also z.B. PuTTY installieren, eine Telnet-Session (Name z.B. "FAHControl localhost") für Rechner localhost mit Port 36330 erzeugen. Mit dem 32-Bit-Putty sollte der Befehl wie folgt aussehen:
Code:
( echo finish 00 & echo. & echo exit ) | "C:\Program Files (x86)\PuTTY\plink.exe" -batch -load "FAHControl localhost"
 
... ich habe hier leider Probleme mit dem PuTTY: unter Session habe ich unter Host Name "localhost", bei Connections type "telnet" und somit Port "36330" eingerichtet. Das habe ich unter FAHControl localhost abgespeichert. Dann gestartet und den Code eingetragen - wie geht das in der blackbox eigentlich mit copy&paste?

Leider kommt eine Fehlermeldung "unknown command or variable" :(

Wat nu?

Kann ich die notwendige Eingabe in die blackbox irgendwie automatisieren? Nur so wäre das Tool mit Zeitsteuerung einsetzbar, oder übersehe ich da was?

Danke für Deine Unterstützung. :daumen:
 
Folgende neuen Erkenntnisse:

- die o.g. genannte PuTTY-Session "FAHControl localhost" für Rechner localhost mit Port 36330 muss mit Connection type Raw angelegt werden,
in den Terminal-Einstellungen muss "Implicit CR in every LF" und "Implicit LF in every CR" aktiviert sein
- ggf. reicht es zum Warten auf das Ende der aktiven Projekte auch, mittels plink (PuTTY) die Befehle über das ClientRemoteInterface die Befehle wait-for-units und exit zu senden
Code:
( echo wait-for-units & echo. & echo exit ) | "C:\Program Files (x86)\PuTTY\plink.exe" -batch -load "FAHControl localhost"
Getestet habe ich das nur elementar.

Die Funktion des Scripts waitfoldingprojects.sh wurde erweitert:

- beim Aufruf ohne optionale Slot-Namen werden alle Slots überwacht
- beim Aufruf übergebene Slot-Nummern, die nicht existieren, werden ignoriert
- die aktuellen Slot-Informationen werden über das ClientRemoteInterface ermittelt
- wenn mittels Aufrufparameter das Beenden eines existierenden Slots überwacht werden soll, welcher nicht aktiv ist, wird dieser ebenfalls ignoriert
- wenn keiner der beim Aufruf übergebenen Slot-Nummern existieren, wird der Fehlercode 3 zurückgegeben und das Herunterfahren von Windows im aufrufenden cmd-Script shutdownafterfolding.cmd übersprungen

- hinzugefügt wurde das VBS-Script shutdownafterfolding.vbs, welches das cmd-Sript shutdownafterfolding.cmd mit verstecktem Konsolenfenster ausführt
- im Zip-Archiv befindet sich ein tgz-File, in dem die Komponenten in der Verzeichnisstruktur enthalten sind, in der sie im Cygwin-Filesystem entpackt werden müssen
- zur Auswertung der "PyON Messages" der ClientRemoteInferface wird der jq-Befehl verwendet, der in Cygwin nicht enthalten ist; die Komponeten wurden in meiner Cygwin64-Umgebung gelinkt und sind ebenfalls im tgz-File gepackt; die Tests in meiner Umgebung haben funktioniert

Erforderliche Komponenten in Cygwin:
- aus Cygwin-Bundle: mv, grep, sed, tail, awk, wc, nc
- own build im Archiv enthalten: jq

Weitere Tester bitte Rückmeldung, ob die Funktion auch mit den gepackten Komponenten korrekt ist.

EDIT 03.03.2016: vorherige Version der Tools entfernt, s. Post unten.
 
Zuletzt bearbeitet:
Matti, ich muss den vielen Input von gestern Abend erstmal verdauen. Das was Du da gezaubert hast, echt Wahnsinn! Hätte ich allein im Leben nicht hinbekommen. :daumen: Danke nochmals.

Zum Test: sobald mal ne halbe Stunde am Stück frei ist, mach ich mich bei.

Zum "alten" Stand: der funktioniert, eine Einbindung habe ich vorgenommen.

So habe ich es angewendet:

Start Rechner per Bios: 08:30 Uhr

AutoStart: SpeedFan, NVidia Inspector mit OC-Profilen, 5 Sekunden später FAH, ab 13:30 setzt das Skript die WUs auf "Finish" und fährt nach Fertigungstellung den Rechner runter


batch-Datei
------------------
@echo off

rem - Warteschleife 5 Sekunden für GPU OC
timeout /t 5

rem - FAH-Client wird gestartet
start C:\Users\Shockwave\Desktop\Folding@home

rem - um 13:30 ...
at 13:30

rem - ... wird das Skript gestartet, WUs auf "finish" gesetzt und nach Fertigstellung der WUs wird der Rechner runtergefahren
start C:\cygwin64\usr\local\bin\shutdownafterfolding00u01trace.cmd

pause
--------------------
 
Korrektur, Stand 03.03.2016, Version 2:
Anpassung:
- finishen alle zu ueberwachenden und existierenden Slots beim Start des Scripts

Anhang anzeigen shutdownafterfolding.zip

EDIT 04.03.:
Der Test mit dem letzten Programmstand in meiner Windows 10 VM war o.k., Projekt ordnungsgemäß beendet, Windows korrekt heruntergefahren.:daumen:

Gerade lief ein Test mit Senden von "finish 00" und "wait-for-units" über das ClientRemoteInterface mit PuTTY-plink. Scheinbar funktioniert das wait-for-units mittels PuTTY-plink nicht richtig, wurde schon vor dem Ende des Projekts beendet. Ich teste das noch mal mit nc im Cygwin.
 
Zuletzt bearbeitet:
So, das Update wurde getestet. Läuft super! Eine Klasse Lösung :daumen:

Nochmals vielen Dank geht an Mattinator!
 
Keine Ursache, man kann immer etwas neues lernen. Läuft hoffentlich eine Weile ohne Probleme, keine Software ist fehlerfrei.;)
 
Da ich die Scrips demnächst selber gerne verwenden würde, habe ich ein paar kleine Fragen.
Also muss ich als erstes Cygwin installieren. Dann die Zip Datei entpacken und in das Verzeichnis "C:\cygwin64\"
packen?
Danach muss ich nur noch die Batch Datei von Brooker einfach nur in den Autostart packen und dann läuft das?
Falls nicht würde ich mich noch einmal über eine Schritt für Schritt Anweisung freuen, da ich auf dem Gebiet noch nicht viel Ahnung habe.

Was ich machen möchte:
Vom Bios aus um 7:00 den Rechner starten. Afterburner und die Batch-Datei von Brooker in den Autostart und die Batch so umschreiben, dass die Projekte um 2 oder 2:30 gefinished werden.
Da ich den Rechner während meiner Arbeitszeit nicht nutze, kann er dann nämlich munter vor sich hin folden.
 
Zuletzt bearbeitet:
Ok danke. Das sieht schon mal etwas übersichtlicher aus.(Für Laien)
Kleine Frage hätte ich aber dennoch.
Diese schreib ich dann aber mal in deinem Thread. :D
 
Zurück