Stefan's Weblog

12Sep/140

Automatisches Update mit Reboot mit Hilfe eines Cron-Jobs

Dient der Raspberry Pi, wie bei mir als Überwachungskamera, dann wird man darauf nicht so häufig darauf zugreifen. Ich habe deshalb auch eine automatisches Update und Reboot-Skript auf dem Pi hinterlegt, um den Prozess zu automatisieren.

Das dafür notwendige Bash-Skript habe ich ebenfalls in meinen Skript-Pfad /home/pi/script abgespeichert.

Ein Reboot des Systems erfolgt hierbei nur, wenn sich eine Firmwareänderung durch das Update ergibt, d.h. das Verzeichnis /root/.rpi-firmware ändert sich.

Das Skript erstellt ihr mit dem Editor nano über die Konsole und tragt den folgenden Inhalt ein.

cd /home/pi/script
nano

Der Inhalt des Skripts:

#!/bin/bash

## Create Log? [0=no , 1=yes]
LOG=1
LOGFILE=/var/log/UPGRADE.log
# Maximale Logfile Grösse in Bytes? (leer lassen falls unbegrenzt) (512000 bytes = 500 kilobytes = 0.48 megabytes)
MAXLOGSIZE="512000"
# falls MAXLOGSIZE genutzt wird: Logfile rotieren(1) oder löschen(0)?
LOGROTATE=0

# -------------------------------------------------------------- #
# >>> >> >  DO NOT MESS WiTH ANYTHiNG BELOW THiS LiNE!  < << <<< #
# -------------------------------------------------------------- #

# write and check log
_LOG() {
    if [ -n "$LOGFILE" ]; then
        #check size of logfile
        if [ -n "$MAXLOGSIZE" ] && [ -f "$LOGFILE" ] && [ "$(stat --printf="%s" $LOGFILE)" -gt "$MAXLOGSIZE" ]; then
            if [ "$LOGROTATE" = 1 ]; then
                echo "rotating logfile $LOGFILE"
                mv -f $LOGFILE ${LOGFILE}.1 >/dev/null 2>&1
            else
                echo "deleting logfile $LOGFILE"
                rm -f $LOGFILE >/dev/null 2>&1
            fi
            touch $LOGFILE
        fi
        echo "[$(date +"%d.%m.%Y %H:%M:%S")]  $1" >> $LOGFILE
    fi
}

apt-get update
[ ! -z "$LOG" -a "$LOG" == 1 ] && _LOG "$(apt-get upgrade -s)"
apt-get upgrade -y

/usr/bin/rpi-update

CurrentDate=$(date -d@$(date +%s) +"%H%d%m%Y")
rpiupdateDate=$(date -d@$(stat -c %Z /root/.rpi-firmware/) +"%H%d%m%Y")

[ "$CurrentDate" == "$rpiupdateDate" ] && reboot

exit 0

Das Bash-Skript ist zwingend als Root auszuführen.

sudo crontab -e

Der Update-Prozess soll einmal in der WOche gestartet werden, deshalb habe ich den folgenden Eintrag der crontab-Datei hinzugefügt.

0 0 * * 0 /bin/sh /home/pi/script/autoreboot.sh

Weitere Infos finden sich in einem sehr guten Thread auf ➡ www.forum-raspberrypi.de/Thread-automatisch-neustarten-und-updates

Bildquelle: raspberrypi.org

hat dir dieser Artikel gefallen?

Dann abonniere doch diesen Blog per RSS Feed!

Kommentare (0) Trackbacks (0)

Zu diesem Artikel wurden noch keine Kommentare geschrieben.


Leave a comment

Noch keine Trackbacks.

%d Bloggern gefällt das: