Nein, keiner muss ins andere Forum wechseln. ![]()
Ich habe nun zunächst eine Quick'n'dirty Version fertig gestellt, da ist noch Optimierungspotential, aber ich habe eben wenig Zeit.
Es sind auch noch einige überflüssige Zeilen drin da ich das meiste aus einem meiner anderen Skripte kopiert habe.
Das Script ist im Codeblock und macht folgendes:
Prüfen ob das Filesystem clean ist -> keine weitere Aktion außer Statusmail senden (Empfangs- und Senderadresse muss im oberen Teil selbst eingetragen werden).
Wenn Filesystem nicht clean (d.h. z.B. rebuild oder resync) -> ändere den crontab Eintrag für den Shutdown auf den nächsten Tag.
Rudimentär gestestet läuft es bei mir (d.h. der crontab Eintrag wird geändert).
Trotzdem: keine Gewähr! Benutzung auf eigene Gefahr.
Rückmeldungen erwünscht.
Geplante Optimierung: Auslesen der Restzeit für rebuild/resync und dadurch ggf. keine Änderung der crontab oder Rückstellung auf den aktuellen Tag.
Default ist device /dev/md1 , für alte NAS (CAT1) oder andere mdadm devices muss das Skript mit dem Parameter md0 oder md2 (oder allgemein mdX wobei X=Nummer des md devices) aufgerufen werden.
Updates dazu nach Freischaltung in der Filebase. Sobald das Skript dort downloadbar ist, entferne ich hier den Codeblock!
Mehrere md devices parallel werden derzeit nicht unterstützt. Theoretisch könnte man das Skript unter verschiedenen Namen mit dem jeweiligen md-Parameter eintragen und so auch mehrere md devices gleichzeitig prüfen, also z.B. in der crontab:
10 10 * * * /etc/config/scrub_md1.sh md1
10 12 * * * /etc/config/scrub_md2.sh md2
Wobei scrub_mdX.sh jeweils dasselbe Skript ist (d.h. die Skript Datei ist unter beiden Dateinamen abgespeichert.
Allerdings sehe ich hier das Risiko das bei unterschiedlichen Laufzeiten des Scrubbing/Rebuilds sich die Skripte gegenseitig stören.
Auch kann eine Änderung in einer Datei evtl. in der anderen vergessen werden, also nicht zu empfehlen.
Gruss
P.S. Die Mailadresse im Script "nobody@somewhere.com" ist natürlich eine Fake Adresse und bewirkt nur, das KEINE Mail gesendet wird.
Das hab ich eingebaut da ich nicht jedesmal beim Testen eine Mail senden will.
In diesem Skript greift das aber (noch) nicht, da ich hier die Parameter Eingabe noch nicht umgesetzt habe.
P.P.S. Wie angekündigt habe ich den Codeblock entfernt da das Skript in Kürze in der Filebase ist.
Achtung: die gegenwärtige Version 1.0.0 hat noch einen Fehler im Trigger, bitte auf V1.2 warten.