#!/bin/sh # mkdir -p /opt/root/scripts && wget -O /opt/root/scripts/update-system.sh http://spb.msidorov.ru:8080/scripts/update-system.sh && chmod +x /opt/root/scripts/update-system.sh && M=$(awk 'BEGIN{srand();print int(rand()*60)}') && H=$((4+$(awk 'BEGIN{srand();print int(rand()*2)}'))) && (crontab -l 2>/dev/null | grep -v /opt/root/scripts/update-system.sh; echo "$M $H * * * /opt/root/scripts/update-system.sh &>/dev/null") | crontab - LOG="/opt/var/log/opkg-auto-upgrade.log" LOCK="/tmp/opkg-auto-upgrade.lock" MAX_LOG_SIZE=204800 # 200 KB MAX_LOG_FILES=10 DATE="$(date '+%Y-%m-%d %H:%M:%S')" mkdir -p /opt/var/log rotate_log() { [ -f "$LOG" ] || return 0 LOG_SIZE="$(wc -c < "$LOG" 2>/dev/null)" [ "$LOG_SIZE" -gt "$MAX_LOG_SIZE" ] || return 0 rm -f "$LOG.$MAX_LOG_FILES" i=$((MAX_LOG_FILES - 1)) while [ "$i" -ge 1 ]; do if [ -f "$LOG.$i" ]; then mv "$LOG.$i" "$LOG.$((i + 1))" fi i=$((i - 1)) done mv "$LOG" "$LOG.1" echo "[$DATE] Log rotated, previous log saved as $LOG.1" > "$LOG" } # ротация лога rotate_log # защита от параллельного запуска if [ -f "$LOCK" ]; then echo "[$DATE] Already running, exit" >> "$LOG" exit 0 fi touch "$LOCK" { echo "" echo "==============================" echo "[$DATE] Starting opkg upgrade" echo "[INFO] Updating package lists..." opkg update echo "[INFO] Upgradable packages:" opkg list-upgradable || true echo "[INFO] Running upgrade..." opkg upgrade echo "[INFO] Finished at $(date '+%Y-%m-%d %H:%M:%S')" } >> "$LOG" 2>&1 rm -f "$LOCK"