Ich habe seit ein paar Tagen auf IPS 4 auf einem Raspberry 2 umgestellt.
Bin super zufrieden damit - auch was die Geschwindigkeit angeht.
Nun muss ich meine bisherige Backupstrategie umbauen.
Ich möchte aus IPS (Webfront) heraus ein Backup anstarten können.
Früher hab ich dies über ein WIN IPS System auf dem Linux IPS System mit SSH Einwahl und einem einfachen (exec(„Routine.sh“…) gemacht.
Nun möchte ich das ganze ja lokal auf demselben System starten.
Habt ihr mir da ne Idee (mit IPSEXECUTE / IPSEXECUTE…) klappts nicht.
Benötige vermutlich höhere Systemreche (sudo) zum starten der Routine.
Hier mal die Backuproutine um die es geht (liegt unter /home/pi/Tools/IPS_restart.sh)
inotify-tools unterm Raspi nachinstallieren
Backupordner erstellen: /home/pi/backup/DATUM
Logfile mit Fehlern wegschreiben
Warten bis Settings.json weggeschrieben wurde, dann Dienst beenden
IPS wegkopieren
IPS wieder starten.
IPS_restart.sh
#!/bin/bash
# IPS Stoppen und Raspberry neustarten in 1 Minute
# Speichern als IPS_Raspi_Restart.sh
# Variablendefinition
# -------------------
mkdir /home/pi/backup/$(date +%F)
log="/home/pi/backup/$(date +%F)/IPS.log"
PID=symcon
settings="/var/lib/symcon/settings.json"
# -------------------
if pidof $PID > /dev/null
then
echo -e $(date)" IP-Symcon laeuft. Warte auf Aktualisierung der \"settings.json\"." >> $log
inotifywait -q -e close_write --format %w%f $settings | while read FILE
do
echo -e $(date)" Beende IP-Symcon." >> $log
if sudo /etc/init.d/symcon stop
cp /var/lib/symcon/* -r /home/pi/backup/$(date +%F) -a
then
echo -e $(date)" IP-Symcon wurde beendet." >> $log
killall symcon
echo -e $(date)" IP-Symcon wurde erfolgreich beendet." >> $log
echo -e $(date)" IP-Symcon wird neugestartet" >> $log
sudo /etc/init.d/symcon start
fi
done
else
echo -e $(date)" IP-Symcon laeft nicht." >> $log
exit 1
fi
exit
Ich habs mal damit probiert, aber ohne Erfolg:
SetValue(45259 /*[Haus\IPS PC + RASPI\RASPI IPS NEUSTART\Raspi IPS neugestartet am]*/,date("d.m.y H:i:s"));
IPS_Execute("/home/pi/tools/IPS_restart.sh", "", false, false);