DS herunterfahren wenn kein Client mehr vorhanden

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.715
Punkte für Reaktionen
1.022
Punkte
754
Ich würde alle Fragen mit "Ja" beantworten. Das Skript sollte ausführbar sein, also ggfs. folgenden Befehl ausführen:

Rich (BBCode):
chmod 750 /volume1/private/scripts/autoshutdown.sh
 

Beefjerckey

Benutzer
Mitglied seit
10. Mrz 2016
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
Danke!
Bin begeistert.

Eines ist mir aber noch aufgefallen:
Du löschst das Lockfile mit
Rich (BBCode):
rm -f $LOCKFILE
aber erst nach dem
Rich (BBCode):
poweroff

Ist das so korrekt?
Bleibt da nicht das Lockfile erhalten und damit wird das Script das nächste Mal nicht richtig ausgeführt?
 
Zuletzt bearbeitet:

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.715
Punkte für Reaktionen
1.022
Punkte
754
Sorry, Du hast Deinen Beitrag editiert, so dass ich die Änderung nicht mehr mitbekommen habe.

Du hast aus meiner Sicht recht: Erst muss die Lockdatei gelöscht werden, dann der poweroff ausgelöst werden. Bei ausgeschalteter DS kann man keine Datei löschen.
 

Beefjerckey

Benutzer
Mitglied seit
10. Mrz 2016
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
Dazu hätte ich jetzt noch eine Frage:
Wie kann ich in diesem Script implementieren, dass, falls Hyber Backup gerade sichert, noch gewartet wird?
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.715
Punkte für Reaktionen
1.022
Punkte
754
Du kannst prüfen, ob der Hyper-Backup-Prozess läuft. Wenn er läuft, siehst Du seinen Namen in der Prozessliste und kannst dann mit diesem Namen testen.
 

Beefjerckey

Benutzer
Mitglied seit
10. Mrz 2016
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
Ja, die Idee dahinter ist mir schon klar, aber wie muss das im Script nachher aussehen?
 

Beefjerckey

Benutzer
Mitglied seit
10. Mrz 2016
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
Habe das hier gefunden:
Code:
if [ "$(pidof synolocalbkp)" ]; then
   cancel
fi

Hier müsste natürlich der Prozess (synolocalbkp) in HyberBackup angepasst werden.
Reicht das so?
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.715
Punkte für Reaktionen
1.022
Punkte
754
Probiere es aus. "cancel" sagt mir nichts. Im Ergebnis brauchst Du ein poweroff, aber das ist Dir ja bekannt.
 

ViperCOM

Benutzer
Mitglied seit
10. Mai 2016
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
DSM6 macht mich ganz kirre. Denn seit dem Update funktioniert mein Cronjob nicht mehr

Code:
MAILTO=""
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
#minute	hour	mday	month	wday	who	command
*	22-6	*	*	*	root	/volume1/shutdown_on_not_used.sh

Lief vorher alles einwandfrei. -auch das Script selbst, wenn es direkt aufgerufen wird, tut nach wie vor was es soll.

Was hat sich denn mit DSM 6 geändert, dass der Cronjob nicht mehr startet? Seht ihr einen Fehler im cron-Eintrag?

1000Dank und Gruß
 

Beschleuniger

Benutzer
Mitglied seit
16. Mai 2016
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
DSM6 und Cronjob funktioniert bei mir auch nicht mehr richtig.

so startet noch mein streamripper zwar noch, aber das automatische umbenennen der Dateien klappt auch nicht mehr wie früher.
 

ViperCOM

Benutzer
Mitglied seit
10. Mai 2016
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Es scheint wohl etwas mit der Stundenangabe zu tun zu haben. Setze ich auch bei "hour" ein *, wird ordnungsgemäß jede Minute das Script ausgeführt.
-bei 22-6 jedoch gar nicht! (Das war vor DSM6 definitiv nicht so!)

Ich mache jetzt nochmal einen Test ohne Übergang in den nächsten Tag (pm->am) und berichte das Ergebnis.
 

ViperCOM

Benutzer
Mitglied seit
10. Mai 2016
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
DSM6 und Cronjob funktioniert bei mir auch nicht mehr richtig.

so startet noch mein streamripper zwar noch, aber das automatische umbenennen der Dateien klappt auch nicht mehr wie früher.


Dann scheint es aber nichts mit Cron oder der Crontab zu tun zu haben.
Dieser Thread berichtet davon, dass mit DSM6 die Shell zu bash gewechselt wurde. Wahrscheinlich läuft deshalb dein Script nicht richtig ab und du müsstest es auf die bash anpassen.
 

Beschleuniger

Benutzer
Mitglied seit
16. Mai 2016
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
@ViperCom

Das heißt wahrscheinlich passt nun etwas bei folgendem Aufruf nicht mehr:

Rich (BBCode):
/usr/bin/exiftool "-filename<CreateDate" -d "/volume1/photo/Bilder/%Y/%Y_%m/%Y-%m-%d %H-%M-%S%%-c.%%le"  /volume1/photo/import
Der Aufruf benennt importiert Bilder automatisch im Import Ordner um und kopiert diese schön nach Datum sortiert in das Bilder Verzeichnis mit entsprechenden Unterordnern.
 

ViperCOM

Benutzer
Mitglied seit
10. Mai 2016
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
DSM6 macht mich ganz kirre. Denn seit dem Update funktioniert mein Cronjob nicht mehr

Code:
MAILTO=""
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
#minute	hour	mday	month	wday	who	command
*	22-6	*	*	*	root	/volume1/shutdown_on_not_used.sh

Lief vorher alles einwandfrei. -auch das Script selbst, wenn es direkt aufgerufen wird, tut nach wie vor was es soll.

Was hat sich denn mit DSM 6 geändert, dass der Cronjob nicht mehr startet? Seht ihr einen Fehler im cron-Eintrag?

1000Dank und Gruß

Tja, die Einstellung "von 22-6 Uhr" funktioniert tatsächlich nicht mehr; 0-6 geht jedoch. ->Bug im Crond? :confused:
Lief bis DSM6 einwandfrei.:mad:
 

Beschleuniger

Benutzer
Mitglied seit
16. Mai 2016
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
@ViperCom

habe versucht den Befehl so anzupassen:

Rich (BBCode):
sudo /usr/bin/exiftool "-filename<CreateDate" -d "/volume1/photo/Bilder/$(date +\%Y)/$(date +\%Y)_$(date +\%m)/$(date +\%Y-\%m-\%d_\%H-\%M-\%S-\c.%%le)“  /volume1/photo/backup
Aber damit klappt der Befehl leider nicht.
 

idotadoteumel

Benutzer
Mitglied seit
29. Sep 2013
Beiträge
10
Punkte für Reaktionen
0
Punkte
1
Hilfe

So Leute, ich habs tatsächlich selber hin bekommen! :)
Meine Lösung sieht nun so aus:

in /usr/syno/etc/rc.d liegt nun S99zzcustomstart.sh

in /usr/bin/ liegt dann noch autoshutdown.sh
Habe die Lösung von Myrddin angestrebt.
Dazu per SSH die im Bild gezeigten Befehle eingegeben.

STEPS.JPG

DS neu gestartet.
Clienten (192.168.2.23 und 192.168.2.21) aus.
DS fährt aber nicht herunter!?

Inhalt Autoshutdown.sh
Rich (BBCode):
Zaehler=0
while expr $Zaehler \< 8; do # Nach Zaehler angeben wie viele erfolglose Pings zum Shutdown fuehren.
RET1=$(ping -c 1 192.168.2.21 | tail -1 | awk '{print $7}') # Rechner 1
RET2=$(ping -c 1 192.168.2.23 | tail -1 | awk '{print $7}') # Rechner 2
if [ "$RET1" = "100%" -a "$RET2" = "100%" ] ; then Zaehler=`expr $Zaehler + 1` ; else Zaehler=0 ; fi
sleep 9 #Wartezeit zwischen den Pings in Sekunden
done
poweroff
Inhalt S99zzcustomstart.sh
Rich (BBCode):
autoshutdown.sh &

Warum geht es nich?

Grüße Idot

Edit: DSM 6.0.1-7393 Update 2
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
13.999
Punkte für Reaktionen
264
Punkte
373
Hallo,
auf den ersten Blick fällt /usr/BIN auf (BIN groß geschrieben), dieses Verzeichnis gibt es nicht. Wenn dann
cp /volume1/Sicherung/autoshutdown.sh /usr/bin
(bin klein geschrieben).

Gruß Götz
 

idotadoteumel

Benutzer
Mitglied seit
29. Sep 2013
Beiträge
10
Punkte für Reaktionen
0
Punkte
1
Hallo,
auf den ersten Blick fällt /usr/BIN auf (BIN groß geschrieben), dieses Verzeichnis gibt es nicht. Wenn dann
cp /volume1/Sicherung/autoshutdown.sh /usr/bin
(bin klein geschrieben).

NewSTEP.JPG

kein Unterschied :(
fährt nicht herunter wenn die definierten IP´s nicht im Netz sind.

Eigentlich muss man doch nur die beiden *.sh Dateien in die entsprechenden Ordner kopieren!?
Oder hab ich noch etwas vergessen oder nicht beachtet?
 
Zuletzt bearbeitet:


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat