From 9f112e0903e9b1909fd6397f336487b3fbdf656f Mon Sep 17 00:00:00 2001 From: Wendell Jones Date: Mon, 6 Oct 2025 10:13:29 -0400 Subject: [PATCH] Add update_system.py script for package management and reboot handling --- personal/cron_scripts/crontab | 32 +++++++++++++++++++ personal/cron_scripts/system/update_system.py | 15 +++++++++ 2 files changed, 47 insertions(+) create mode 100644 personal/cron_scripts/crontab create mode 100644 personal/cron_scripts/system/update_system.py diff --git a/personal/cron_scripts/crontab b/personal/cron_scripts/crontab new file mode 100644 index 0000000..92b213a --- /dev/null +++ b/personal/cron_scripts/crontab @@ -0,0 +1,32 @@ +# Edit this file to introduce tasks to be run by cron. +# +# Each task to run has to be defined through a single line +# indicating with different fields when the task will be run +# and what command to run for the task +# +# To define the time you can provide concrete values for +# minute (m), hour (h), day of month (dom), month (mon), +# and day of week (dow) or use '*' in these fields (for 'any'). +# +# Notice that tasks will be started based on the cron's system +# daemon's notion of time and timezones. +# +# Output of the crontab jobs (including errors) is sent through +# email to the user the crontab file belongs to (unless redirected). +# +# For example, you can run a backup of all your user accounts +# at 5 a.m every week with: +# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ +# +# For more information see the manual pages of crontab(5) and cron(8) +# +# m h dom mon dow command +30 0 * * * /cron_jobs/power/ipmi_poweroff.py -H 192.168.129.240 >> /var/log/cron_scripts.log 2>&1 +30 0 * * * /cron_jobs/power/ipmi_poweroff.py -H 192.168.129.241 >> /var/log/cron_scripts.log 2>&1 +0 1 * * * /cron_jobs/power/ilo_poweroff.py -H 192.168.129.242 -a ForceOff --no-serverinfo >> /var/log/cron_scripts.log 2>&1 +0 5 * * * /cron_jobs/system/ilo_poweron.py -H 192.168.129.242 -a On --no-serverinfo >> /var/log/cron_scripts.log 2>&1 +10 5 * * * /cron_jobs/power/ipmi_poweron.py -H 192.168.129.240 >> /var/log/cron_scripts.log 2>&1 +10 5 * * * /cron_jobs/power/ipmi_poweron.py -H 192.168.129.241 >> /var/log/cron_scripts.log 2>&1 +35 0 * * * /cron_jobs/system/update_system.py >> /var/log/cron_scripts.log 2>&1 +*/3 * * * * /cron_jobs/fancontrol/set_fanspeed.py -H 192.168.129.240 >> /var/log/cron_scripts.log 2>&1 +*/3 * * * * /cron_jobs/fancontrol/set_fanspeed.py -H 192.168.129.241 >> /var/log/cron_scripts.log 2>&1 diff --git a/personal/cron_scripts/system/update_system.py b/personal/cron_scripts/system/update_system.py new file mode 100644 index 0000000..7a95d33 --- /dev/null +++ b/personal/cron_scripts/system/update_system.py @@ -0,0 +1,15 @@ +#!/usr/bin/python3 +import subprocess +import os + +# Update package lists +subprocess.run(['sudo', 'apt', 'update'], check=True) +# Upgrade packages +subprocess.run(['sudo', 'apt', 'upgrade', '-y'], check=True) + +# Check if reboot is required +if os.path.exists('/var/run/reboot-required'): + print("Reboot required. Rebooting now...") + subprocess.run(['sudo', 'reboot']) +else: + print("No reboot required.")