Die Variante von luddi klappt so. Die Variante direkt in der VM kenne ich nicht. Wo würde ich den /etc/crontab direkt in der VM finden? Da könnte ich auch sagen, dass dies nur einmal monatlich passieren soll?
Ja das geht definitiv bei einer Aufgabe, die man direkt über den Aufgabenplaner anlegt.Öhm, monatlich müsste auch gehen
shutdown -h now
oder einfach shutdown now
je nachdem was man bevorzugt.shutdown -r now
angeben.Wenn es sich bei dem System um ein Linux handelt dann am einfachsten über dessen Konsole mit dem BefehlWo würde ich den /etc/crontab direkt in der VM finden?
crontab -e
.Wo würde ich den /etc/crontab direkt in der VM finden?
sudo nano /ect/crontab
@luddi: Wenn ich dich richtig verstehe, müsste ich jetzt ein weiteres Benutzerdefiniertes Skript erstellen mit dem Skript shutdown -r now, 30 Minuten nachdem ich meine VM heruntergefahren habe?
synowebapi
herunterzufahren, und der andere zweite Task welcher ca. eine halbe Stunde später ausgeführt wird, um die DiskStation neu zu starten.synowebapi -s --exec api=SYNO.Virtualization.API.Guest.Action version=1 method=shutdown runner=root guest_name="NAME_DER_VM"
shutdown -r now
VM_NAME='NAME_DER_VM'
vmstatus=`synowebapi -s --exec api=SYNO.Virtualization.API.Guest method=list runner=root | jq '.data.guests[] | {guest_id, guest_name, status} | select((.guest_name=='$VM_NAME') and (.status=="shutdown"))' 2>&1 | grep -o "shutdown"`
if [ "$vmstatus" == "shutdown" ]; then
# VM is powered off
shutdown -r now
fi
# VM herunterfahren
synowebapi -s --exec api=SYNO.Virtualization.API.Guest.Action version=1 method=shutdown runner=root guest_name="NAME_DER_VM"
# Warte 30 min (1800 sec)
sleep 1800
# Restart DiskStation nach erfolgreicher Prüfung auf ausgeschaltete VM
VM_NAME='NAME_DER_VM'
vmstatus=`synowebapi -s --exec api=SYNO.Virtualization.API.Guest method=list runner=root | jq '.data.guests[] | {guest_id, guest_name, status} | select((.guest_name=='$VM_NAME') and (.status=="shutdown"))' 2>&1 | grep -o "shutdown"`
if [ "$vmstatus" == "shutdown" ]; then
# VM is powered off
shutdown -r now
fi
Du kannst die DS normalerweise nicht über ein Skript herunterfahren oder neu starten, wenn eine VM läuft. Daher muß zwangsläufig zuerst die VM heruntergefahren sein. Sonst kommt lediglich eine Fehlermeldung, die Dich darauf hinweist, daß die VM noch läuft und die DS deswegen nicht heruntergefahren werden kann.die Diskstation nur Neu gestartet werden, wenn die VM tatsächlich ausgeschaltet ist?
NAME_DER_VM
mit dem Namen deiner VM zu ersetzen.synowebapi -s
habe ich noch den Befehl -s für silent angehängt damit die webapi nicht auch noch auf den stdout schreibt.Das halte ich für ein Gerücht. Denn, wenn der Befehl shutdown über die Konsole oder aus einem crontab ausgeführt wird ist es dem System völlig egal, was da noch am Laufen ist. Es mag sein, dass wenn man das System über das WebUI ausschalten möchte dies verhindert wird.Du kannst die DS normalerweise nicht über ein Skript herunterfahren oder neu starten, wenn eine VM läuft.
Fri Dec 16 root@DiskStation: ~ $ synowebapi -s --exec api=SYNO.Virtualization.API.Guest method=list runner=root | jq '.data.guests[] | {guest_id, guest_name, status}'
{
"guest_id": "4645a70b-0547-4f9e-8817-42633ef19c7e",
"guest_name": "DSM7",
"status": "running"
}
Fri Dec 16 root@DiskStation: ~ $ shutdown -r now
Fri Dec 16 root@DiskStation: ~ $ Connection to 192.168.135.251 closed by remote host.
Connection to 192.168.135.251 closed.
Fri Dec 16 userT1@host1: ~ $
VM_NAME='Home Assistant'
vmstatus=`synowebapi -s --exec api=SYNO.Virtualization.API.Guest method=list runner=root | jq '.data.guests[] | {guest_id, guest_name, status} | select((.guest_name=='$VM_NAME') and (.status=="shutdown"))' 2>&1 | grep -o "shutdown"`
if [ "$vmstatus" == "shutdown" ]; then
# VM is powered off
shutdown -r now
fi
Prima!Ohne die Single quotes hat es funktioniert.
VM_NAME='Home Assistant'
select((.guest_name=="Home Assistant")
select((.guest_name=="Home Assistant")
denn ich habe bei meinen Tests gerade selbst ein merkwürdiges Verhalten bemerkt, wenn ich eine Variable verwende.vmstatus=`synowebapi -s --exec api=SYNO.Virtualization.API.Guest method=list runner=root | jq '.data.guests[] | {guest_id, guest_name, status} | select((.guest_name=="Home Assistant") and (.status=="shutdown"))' 2>&1 | grep -o "shutdown"`
if [ "$vmstatus" == "shutdown" ]; then
# VM is powered off
shutdown -r now
fi
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.