From 215e7dee6965347ba4852724af8a315e9836493e Mon Sep 17 00:00:00 2001 From: Hyperling Date: Tue, 30 Sep 2025 14:04:34 -0700 Subject: [PATCH 01/35] Add more eBooks to the reseed list. --- tasks/general/acct_mgmt/users.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index a612ec9..9c417a9 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -577,6 +577,11 @@ env-obtainium-hyperling dev nodejs-website dev ebook-health-protocol dev + ebook-freedom-flyer dev + ebook-technology-alternatives dev + ebook-narcissism-healing dev + ebook-forest-howto dev + ebook-template main flutter-expense-tracker dev flutter-social-traveler-app dev nodejs-social-traveler-server dev -- 2.49.1 From 93b919f48bf01e7ba66dd3862b7d3d8a109a5e50 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Fri, 3 Oct 2025 18:53:20 -0700 Subject: [PATCH 02/35] Remove bool filter where it does not always makes sense. Should fix swap files from not getting created. --- tasks/general/acct_mgmt/provision_config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasks/general/acct_mgmt/provision_config.yml b/tasks/general/acct_mgmt/provision_config.yml index 52c5727..18fc457 100644 --- a/tasks/general/acct_mgmt/provision_config.yml +++ b/tasks/general/acct_mgmt/provision_config.yml @@ -132,7 +132,7 @@ pentesting: "{{ lookup('ini', 'pentesting file={{gen_file}} default=false') | bool }}" no_telem: "{{ lookup('ini', 'no_telem file={{gen_file}} default=false') | bool }}" battery: "{{ lookup('ini', 'battery file={{gen_file}} default=false') | bool }}" - swap_block: "{{ lookup('ini', 'swap_block file={{gen_file}} default=false') | bool }}" + swap_block: "{{ lookup('ini', 'swap_block file={{gen_file}} default=false') }}" swap_count: "{{ lookup('ini', 'swap_count file={{gen_file}} default=1') }}" swap_file: "{{ lookup('ini', 'swap_file file={{gen_file}} default=/swapfile') }}" sshd_port: "{{ lookup('ini', 'sshd_port file={{gen_file}} default=22') }}" @@ -215,7 +215,7 @@ workstation: "{{ lookup('ini', 'enable file={{wrk_file}} default=false') | bool }}" coding: "{{ lookup('ini', 'coding file={{wrk_file}} default=false') | bool }}" sdks: "{{ lookup('ini', 'sdks file={{wrk_file}} default=false') | bool }}" - editing: "{{ lookup('ini', 'editing file={{wrk_file}} default=false') | bool }}" + editing: "{{ lookup('ini', 'editing file={{wrk_file}} default=false') }}" gaming: "{{ lookup('ini', 'gaming file={{wrk_file}} default=false') | bool }}" rdp: "{{ lookup('ini', 'rdp file={{wrk_file}} default=false') | bool }}" vnc: "{{ lookup('ini', 'vnc file={{wrk_file}} default=false') | bool }}" -- 2.49.1 From a8e6e0b6c6ae47fd2f6e83ede95c5ae060cd9fee Mon Sep 17 00:00:00 2001 From: Hyperling Date: Sat, 4 Oct 2025 06:32:37 -0700 Subject: [PATCH 03/35] Ensure that debian.source files also get modified by debian-upgrade. --- tasks/general/acct_mgmt/users.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 9c417a9..f963f19 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -810,7 +810,7 @@ echo "*** Continuing with upgrade. ***" sudo sed -i "s/$OLD/$NEW/g" /etc/apt/sources.list - find /etc/apt/sources.list.d -name "*.list" \ + find /etc/apt/sources.list.d -name "*.list" -name "*.source" \ -exec sudo sed -i "s/$OLD/$NEW/g" {} \; sudo grep $OLD /etc/apt/sources.list /etc/apt/sources.list.d/* -- 2.49.1 From 6d2a8223231a90b8f4ccd53f7d67c7533b6f4c82 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Sat, 4 Oct 2025 06:33:37 -0700 Subject: [PATCH 04/35] Add `System` to local system backup file. --- tasks/general/acct_mgmt/users.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index f963f19..c791eef 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -761,7 +761,7 @@ function backup { EXTRA="$1" BACKUP_DIR="/tmp" - BACKUP_FILENAME="Backup-`now`.zip" + BACKUP_FILENAME="Backup-System-`now`.zip" BACKUP="$BACKUP_DIR/$BACKUP_FILENAME" echo "*** Creating backup at '$BACKUP' ***" sudo zip -rv "$BACKUP" \ -- 2.49.1 From c0ba27e7820a925f5a52bd875704299e2e4cdeaa Mon Sep 17 00:00:00 2001 From: Hyperling Date: Sat, 4 Oct 2025 06:55:42 -0700 Subject: [PATCH 05/35] Add command to regenerate all ebooks. --- tasks/general/acct_mgmt/users.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index c791eef..4e4e297 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -846,6 +846,12 @@ unset OLD NEW } alias upgrade-debian="debian-upgrade" + function_ebook_convert: | + function ebook-convert { + find ~/Code/ebook-* -name convert.sh -print -exec bash "{}" \; + } + alias ebooks="ebook-convert" + alias convert="ebook-convert" - name: General | Account Management | Users | Files | Common Variable set_fact: @@ -917,6 +923,7 @@ {{ function_now }} {{ function_backup }} {{ function_debian_upgrade }} + {{ function_ebook_convert }} - name: General | Account Management | Users | Files | .bashrc blockinfile: -- 2.49.1 From 4e9e7145046a05630725ad8a042f8445d49aaa31 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Sat, 4 Oct 2025 06:56:22 -0700 Subject: [PATCH 06/35] Add comment! --- tasks/general/acct_mgmt/users.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 4e4e297..3b34fda 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -847,6 +847,7 @@ } alias upgrade-debian="debian-upgrade" function_ebook_convert: | + # Regenerate all eBook projects at once. function ebook-convert { find ~/Code/ebook-* -name convert.sh -print -exec bash "{}" \; } -- 2.49.1 From a730919b4330d43f0b66c5b25f6e9086c2fe5d5e Mon Sep 17 00:00:00 2001 From: Hyperling Date: Sat, 4 Oct 2025 14:10:31 -0700 Subject: [PATCH 07/35] Purge existing PDFs first so that old names get removed. --- tasks/general/acct_mgmt/users.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 3b34fda..1a60e95 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -849,6 +849,7 @@ function_ebook_convert: | # Regenerate all eBook projects at once. function ebook-convert { + find ~/Code/ebook-* -name "*.pdf" -print -delete find ~/Code/ebook-* -name convert.sh -print -exec bash "{}" \; } alias ebooks="ebook-convert" -- 2.49.1 From d35d9ccdd2f5c341292aa7a83f99be279bc95063 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Mon, 6 Oct 2025 18:21:24 -0700 Subject: [PATCH 08/35] Add cleaning of generated PDF files. --- tasks/general/acct_mgmt/users.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 1a60e95..81be596 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -687,6 +687,9 @@ done cd + echo -e "******* PDFs *******" + find ~/Code/ebook-* -name "*.pdf" -exec du -h {} \; -delete | sort -h + echo -e "\n*** Done! ***" } alias code-clean="clean-code" -- 2.49.1 From 400ef8400ccf3dd753f0d233fc85d020ba2b56d8 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Mon, 6 Oct 2025 18:35:20 -0700 Subject: [PATCH 09/35] Change what `clean` does to be much safer. --- tasks/general/acct_mgmt/users.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 81be596..08a51f1 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -386,18 +386,19 @@ alias_trash_clean: alias trash-clean='trash-check --clean' alias_clean_dir: | function clean-dir() { + sudo du -hs clean_dir="`date '+%Y%m%d_%H%M%S'`_CLEANED" trash_dir="$HOME/TRASH/$clean_dir" curr_dir="`pwd`" mkdir -pv "$trash_dir" echo "$curr_dir is being cleaned at `date`." | tee "$trash_dir"/INFO.txt mv -v ..?* .[!.]* * "$trash_dir"/ | tee -a "$trash_dir"/INFO.txt + sudo du -hs } function_clean: | function clean() { - sudo du -hs - clean-dir - sudo du -hs + clean-trash + clean-code } function_flatpak_usage: | function flatpak-usage() { -- 2.49.1 From 130b243be3f82978b4cc72b9c3a9a0ec274b5b8d Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 9 Oct 2025 06:54:36 -0700 Subject: [PATCH 10/35] Add method to clean up hidden trashed files, usually from Android. --- tasks/general/acct_mgmt/users.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 08a51f1..e7e243c 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -283,6 +283,19 @@ alias edit-config-wrk="sudo $EDITOR {{ wrk_file }}" alias edit-config-mnr="sudo $EDITOR {{ mnr_file }}" alias edit-config-srv="sudo $EDITOR {{ srv_file }}" + function_clean_trashed: | + function clean-trashed { + dir="$1" + if [[ -z $dir ]]; then + dir="./" + fi + cd $dir + dir="`pwd`" + echo "Removing '.trashed*' files in '$dir'." + find "$dir" -name ".trashed*" -exec du -h {} \; -delete + } + alias trashed-cleanup="clean-trashed" + alias trashed-clean="clean-trashed" function_check_trash: | function check-trash() { unset OPTIND @@ -378,6 +391,9 @@ fi echo "Checking but not cleaning /var/mail..." du -ha /var/mail | sort -h + if [[ $clean == "Y" ]]; then + clean-trashed "~/" + fi return 0 } alias check_trash="check-trash" @@ -895,6 +911,7 @@ {{ metasploit_aliases }} {{ show_config_aliases }} {{ edit_config_aliases }} + {{ function_clean_trashed }} {{ function_check_trash }} {{ function_clean }} {{ function_flatpak_usage }} -- 2.49.1 From f7c321bf23aaf58ba111c092f7e31f50d94a6fc7 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 9 Oct 2025 06:59:41 -0700 Subject: [PATCH 11/35] Sort the cleanup by filesize. --- tasks/general/acct_mgmt/users.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index e7e243c..7952189 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -292,7 +292,7 @@ cd $dir dir="`pwd`" echo "Removing '.trashed*' files in '$dir'." - find "$dir" -name ".trashed*" -exec du -h {} \; -delete + find "$dir" -name ".trashed*" -exec du -h {} \; -delete | sort -h } alias trashed-cleanup="clean-trashed" alias trashed-clean="clean-trashed" -- 2.49.1 From 57dc62a74a3610fa60e471337d87df7c172a787f Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 9 Oct 2025 07:47:09 -0700 Subject: [PATCH 12/35] Change filename to match new Docker format. --- tasks/general/acct_mgmt/users.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 7952189..46b2a3c 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -780,9 +780,11 @@ function_backup: | function backup { EXTRA="$1" - BACKUP_DIR="/tmp" - BACKUP_FILENAME="Backup-System-`now`.zip" - BACKUP="$BACKUP_DIR/$BACKUP_FILENAME" + TAG="System" + BASENAME="/tmp/Backup" + BACKUP="$BASENAME-`now`.$HOSTNAME.$TAG.zip" + echo "*** Removing Old Backups ***" + rm -fv "$BASENAME"*"$TAG"* echo "*** Creating backup at '$BACKUP' ***" sudo zip -rv "$BACKUP" \ /etc /var/{log,mail,spool} /srv /boot \ -- 2.49.1 From 03b9f7e1b25fd14e88617528946aa699bf476263 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 9 Oct 2025 07:48:27 -0700 Subject: [PATCH 13/35] Add function for just the date. --- tasks/general/acct_mgmt/users.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 46b2a3c..8e9631c 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -777,6 +777,9 @@ function now { date "+%Y%m%d_%H%M%S" } + function today { + date "+%Y%m%d" + } function_backup: | function backup { EXTRA="$1" -- 2.49.1 From 267a260e90d759dca67761b00a7392649bd5cd76 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 9 Oct 2025 07:48:52 -0700 Subject: [PATCH 14/35] Use hyphen not underscore for timestamp. --- tasks/general/acct_mgmt/users.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 8e9631c..f8a4151 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -775,7 +775,7 @@ alias ansible-facts='ansible localhost -m setup --connection=local' function_now: | function now { - date "+%Y%m%d_%H%M%S" + date "+%Y%m%d-%H%M%S" } function today { date "+%Y%m%d" -- 2.49.1 From fb00d3e6bcb77c23400b6eb9051f9c324b595c4c Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 9 Oct 2025 07:49:24 -0700 Subject: [PATCH 15/35] Separate file sections with periods. --- tasks/general/acct_mgmt/users.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index f8a4151..af3beb8 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -785,7 +785,7 @@ EXTRA="$1" TAG="System" BASENAME="/tmp/Backup" - BACKUP="$BASENAME-`now`.$HOSTNAME.$TAG.zip" + BACKUP="$BASENAME.`now`.$HOSTNAME.$TAG.zip" echo "*** Removing Old Backups ***" rm -fv "$BASENAME"*"$TAG"* echo "*** Creating backup at '$BACKUP' ***" -- 2.49.1 From 4a33adf07361dfffe1c8a18bbb2de19eccbef72e Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 9 Oct 2025 10:41:27 -0700 Subject: [PATCH 16/35] Add TBD for timezones. --- tasks/general/software/services.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tasks/general/software/services.yml b/tasks/general/software/services.yml index f55a4a2..263bd14 100644 --- a/tasks/general/software/services.yml +++ b/tasks/general/software/services.yml @@ -120,3 +120,7 @@ until: ntp_status.state == "started" retries: 3 delay: 3 + +## Timezone ## + +# TBD/TODO: Add a field to config file which gets applied via timedatectl and /etc/localtime. -- 2.49.1 From 2cf4a348c38c86e2697874ac5457a7ee8b163778 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 9 Oct 2025 10:41:40 -0700 Subject: [PATCH 17/35] Fix backup function not removing old files. --- tasks/general/acct_mgmt/users.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index af3beb8..1a672de 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -787,7 +787,7 @@ BASENAME="/tmp/Backup" BACKUP="$BASENAME.`now`.$HOSTNAME.$TAG.zip" echo "*** Removing Old Backups ***" - rm -fv "$BASENAME"*"$TAG"* + sh -c 'rm -fv "$BASENAME"*"$TAG"*'' echo "*** Creating backup at '$BACKUP' ***" sudo zip -rv "$BACKUP" \ /etc /var/{log,mail,spool} /srv /boot \ -- 2.49.1 From 35469851b36508b0923283e23ba87874376b10d1 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 9 Oct 2025 11:08:08 -0700 Subject: [PATCH 18/35] Fix find command to use OR when checking for multiple extensions. Fix sources extension to be plural. --- tasks/general/acct_mgmt/users.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 1a672de..f875a4b 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -835,11 +835,12 @@ echo "*** Continuing with upgrade. ***" sudo sed -i "s/$OLD/$NEW/g" /etc/apt/sources.list - find /etc/apt/sources.list.d -name "*.list" -name "*.source" \ + find /etc/apt/sources.list.d/ \ + -name "*.list" -o -name "*.sources" \ -exec sudo sed -i "s/$OLD/$NEW/g" {} \; - sudo grep $OLD /etc/apt/sources.list /etc/apt/sources.list.d/* - sudo grep $NEW /etc/apt/sources.list /etc/apt/sources.list.d/* + sudo grep $OLD /etc/apt/sources.list /etc/apt/sources.list.d/*.{list,sources} + sudo grep $NEW /etc/apt/sources.list /etc/apt/sources.list.d/*.{list,sources} echo -en "\nDo the source files look correct? (y/N) " typeset -u confirm_correct -- 2.49.1 From 57243f65e3c45460951b77c1549ac06103083870 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 9 Oct 2025 11:12:29 -0700 Subject: [PATCH 19/35] Do not use OR, .list file was not getting changed. --- tasks/general/acct_mgmt/users.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index f875a4b..636bc94 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -835,8 +835,9 @@ echo "*** Continuing with upgrade. ***" sudo sed -i "s/$OLD/$NEW/g" /etc/apt/sources.list - find /etc/apt/sources.list.d/ \ - -name "*.list" -o -name "*.sources" \ + find /etc/apt/sources.list.d/ -name "*.list" \ + -exec sudo sed -i "s/$OLD/$NEW/g" {} \; + find /etc/apt/sources.list.d/ -name "*.sources" \ -exec sudo sed -i "s/$OLD/$NEW/g" {} \; sudo grep $OLD /etc/apt/sources.list /etc/apt/sources.list.d/*.{list,sources} -- 2.49.1 From 08a7a22dde4513cdcc119d8a2fc549dedf8184ab Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 9 Oct 2025 12:27:46 -0700 Subject: [PATCH 20/35] Add to TBD. --- tasks/general/software/services.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tasks/general/software/services.yml b/tasks/general/software/services.yml index 263bd14..7ec57e5 100644 --- a/tasks/general/software/services.yml +++ b/tasks/general/software/services.yml @@ -123,4 +123,7 @@ ## Timezone ## -# TBD/TODO: Add a field to config file which gets applied via timedatectl and /etc/localtime. +# TBD/TODO: +# Add a field to general.yml config file which gets applied via timedatectl and /etc/localtime. +# Example of what to do to file: +# /etc/localtime -> ../usr/share/zoneinfo/America/Phoenix -- 2.49.1 From df8b33089326b0effd655c4c19ef318e1d806d7f Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 9 Oct 2025 12:38:56 -0700 Subject: [PATCH 21/35] Add and use functions for simpler and more readable logging. --- tasks/general/acct_mgmt/users.yml | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 636bc94..5ca001d 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -803,24 +803,31 @@ echo "*** '$BACKUP' not found! ***" fi } + function_log: | + function log { + echo -e "$1" + } + function blog { + echo -e "\n\n$1\n\n" + } function_debian_upgrade: | function debian-upgrade { typeset -l OLD NEW OLD="$1" NEW="$2" - echo "*** Upgrading from '$OLD' to '$NEW' ***" + blog "*** Upgrading from '$OLD' to '$NEW' ***" if [[ -z "$OLD" || -z "$NEW" ]]; then echo -n "ERROR: Please pass the OLD and NEW version names" echo ", such as 'debian-upgrade bookworm trixie'. " return 1 fi - echo "*** Running 'backup' before starting upgrade. ***" + blog "*** Running 'backup' before starting upgrade. ***" sleep 1 backup - echo "*** Listing the current apt listing for '$OLD' ***" + blog "*** Listing the current apt listing for '$OLD' ***" sudo grep "$OLD" /etc/apt/sources.list /etc/apt/sources.list.d/* echo -en "\nAre these the entries you'd like changed to '$NEW'? (y/N) " @@ -828,12 +835,12 @@ read confirm_change if [[ -z "$confirm_change" || "$confirm_change" == "N"* ]]; then - echo "*** Aborting upgrade, change rejected. ***" + blog "*** Aborting upgrade, change rejected. ***" return 1 fi unset confirm_change - echo "*** Continuing with upgrade. ***" + blog "*** Continuing with upgrade. ***" sudo sed -i "s/$OLD/$NEW/g" /etc/apt/sources.list find /etc/apt/sources.list.d/ -name "*.list" \ -exec sudo sed -i "s/$OLD/$NEW/g" {} \; @@ -848,27 +855,27 @@ read confirm_correct if [[ -z "$confirm_correct" || "$confirm_correct" == "N"* ]]; then - echo "*** Aborting upgrade, confirmation rejected. ***" + blog "*** Aborting upgrade, confirmation rejected. ***" return 1 fi unset confirm_correct - echo "*** Starting the upgrade. ***" + blog "*** Starting the upgrade. ***" sleep 1 sudo apt update sudo apt upgrade --without-new-pkgs - echo "*** Upgrades complete, now add new packages. ***" + blog -e "*** Upgrades complete, now add new packages. ***" sleep 1 sudo apt full-upgrade - echo "*** New packages complete, clean apt files. ***" + blog "*** New packages complete, clean apt files. ***" sleep 1 sudo apt autoremove --purge sudo apt clean - echo "*** All done! '$OLD' is now '$NEW'. Please reboot. ***" + blog "*** All done! '$OLD' is now '$NEW'. Please reboot. ***" sleep 1 unset OLD NEW } @@ -952,6 +959,7 @@ {{ alias_ansible_facts }} {{ function_now }} {{ function_backup }} + {{ function_log }} {{ function_debian_upgrade }} {{ function_ebook_convert }} -- 2.49.1 From c279884da2f90a83186f3100c978158b503d8f78 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 9 Oct 2025 13:30:06 -0700 Subject: [PATCH 22/35] Fix extra `'`. Really need to permanently turn off autocompletion type stuff, it keeps coming back on. --- tasks/general/acct_mgmt/users.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 5ca001d..fa4ae17 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -787,7 +787,7 @@ BASENAME="/tmp/Backup" BACKUP="$BASENAME.`now`.$HOSTNAME.$TAG.zip" echo "*** Removing Old Backups ***" - sh -c 'rm -fv "$BASENAME"*"$TAG"*'' + sh -c 'rm -fv "$BASENAME"*"$TAG"*' echo "*** Creating backup at '$BACKUP' ***" sudo zip -rv "$BACKUP" \ /etc /var/{log,mail,spool} /srv /boot \ -- 2.49.1 From 2f08b1414e278c36f993524954b4cc10eeb8a7c4 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Tue, 14 Oct 2025 07:07:28 -0700 Subject: [PATCH 23/35] Use more standardized backup directory, outside of RAM. --- tasks/general/acct_mgmt/users.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index fa4ae17..56ea6e8 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -784,8 +784,13 @@ function backup { EXTRA="$1" TAG="System" - BASENAME="/tmp/Backup" + BACKUP_DIR="/srv/backup" + BASENAME="$BACKUP_DIR/Backup" BACKUP="$BASENAME.`now`.$HOSTNAME.$TAG.zip" + echo "*** Creating Backup Directory ***" + mkdir -pv $BACKUP_DIR + chmod -Rv 755 $BACKUP_DIR + chown -Rv root:root $BACKUP_DIR echo "*** Removing Old Backups ***" sh -c 'rm -fv "$BASENAME"*"$TAG"*' echo "*** Creating backup at '$BACKUP' ***" -- 2.49.1 From ed160da316b34e2c4dbc0784b7dfd0a3111ddf40 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Tue, 14 Oct 2025 07:44:26 -0700 Subject: [PATCH 24/35] Move `backup` function into script so that cron can access it. --- files/scripts/backup_system.sh | 43 ++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 files/scripts/backup_system.sh diff --git a/files/scripts/backup_system.sh b/files/scripts/backup_system.sh new file mode 100644 index 0000000..cd96536 --- /dev/null +++ b/files/scripts/backup_system.sh @@ -0,0 +1,43 @@ +#/usr/bin/env bash + +## Variables ## + +EXTRA="$1" +TAG="System" +BACKUP_DIR="/srv/backup" +BASENAME="$BACKUP_DIR/Backup" +BACKUP="$BASENAME.`now`.$HOSTNAME.$TAG.zip" + +## Initialization ## + +echo "*** Creating Backup Directory ***" +mkdir -pv $BACKUP_DIR +chmod -Rv 755 $BACKUP_DIR +chown -Rv root:root $BACKUP_DIR + +## Cleanup ## + +echo "*** Removing Old Backups ***" +sh -c 'rm -fv "$BASENAME"*"$TAG"*' + +## Main + +echo "*** Creating backup at '$BACKUP' ***" +sudo zip -rv "$BACKUP" \ + /etc /var/{log,mail,spool} /srv /boot \ + /usr/local/etc $EXTRA +status="$?" + +if [[ "$status" != 0 ]]; then + echo "*** ERROR: Failed to create '$BACKUP', file may be incorrect. ***" +fi + +if [[ -e "$BACKUP" ]]; then + ls -alh "$BACKUP" + echo "*** '$BACKUP' created successfully! ***"s +else + echo "*** '$BACKUP' not found! ***" + exit 1 +fi + +exit 0 -- 2.49.1 From afc3b207856a8b8b859ba29328d00cf35a7035fe Mon Sep 17 00:00:00 2001 From: Hyperling Date: Tue, 14 Oct 2025 07:44:52 -0700 Subject: [PATCH 25/35] Reference script version of `backup` with function and add aliases. --- tasks/general/acct_mgmt/users.yml | 28 +++------------------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 56ea6e8..7225641 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -782,32 +782,10 @@ } function_backup: | function backup { - EXTRA="$1" - TAG="System" - BACKUP_DIR="/srv/backup" - BASENAME="$BACKUP_DIR/Backup" - BACKUP="$BASENAME.`now`.$HOSTNAME.$TAG.zip" - echo "*** Creating Backup Directory ***" - mkdir -pv $BACKUP_DIR - chmod -Rv 755 $BACKUP_DIR - chown -Rv root:root $BACKUP_DIR - echo "*** Removing Old Backups ***" - sh -c 'rm -fv "$BASENAME"*"$TAG"*' - echo "*** Creating backup at '$BACKUP' ***" - sudo zip -rv "$BACKUP" \ - /etc /var/{log,mail,spool} /srv /boot \ - /usr/local/etc $EXTRA - status="$?" - if [[ "$status" != 0 ]]; then - echo "*** ERROR: Failed to create '$BACKUP', file may be incorrect. ***" - fi - if [[ -e "$BACKUP" ]]; then - ls -alh "$BACKUP" - echo "*** '$BACKUP' created successfully! ***" - else - echo "*** '$BACKUP' not found! ***" - fi + /usr/local/bin/backup_system.sh } + alias backup-system="backup" + alias system-backup="backup" function_log: | function log { echo -e "$1" -- 2.49.1 From 07e32decf88e4e07515b32898c260576a6ca2062 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Tue, 14 Oct 2025 08:12:19 -0700 Subject: [PATCH 26/35] Fixes and enhancements for system backups. --- files/scripts/backup_system.sh | 38 ++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 13 deletions(-) mode change 100644 => 100755 files/scripts/backup_system.sh diff --git a/files/scripts/backup_system.sh b/files/scripts/backup_system.sh old mode 100644 new mode 100755 index cd96536..1fe382d --- a/files/scripts/backup_system.sh +++ b/files/scripts/backup_system.sh @@ -1,43 +1,55 @@ -#/usr/bin/env bash +#!/usr/bin/env bash ## Variables ## +if [[ -z "$HOSTNAME" ]]; then + echo "*** Pulling Hostname From Command ***" + export HOSTNAME="`hostname`" +fi +if [[ -z "$HOSTNAME" ]]; then + echo "*** Pulling Hostname From /etc/ File ***" + export HOSTNAME="`cat /etc/hostname`" +fi + EXTRA="$1" TAG="System" +DATE="`date "+%Y%m%d-%H%M%S"`" BACKUP_DIR="/srv/backup" BASENAME="$BACKUP_DIR/Backup" -BACKUP="$BASENAME.`now`.$HOSTNAME.$TAG.zip" +BACKUP="$BASENAME.$DATE.$HOSTNAME.$TAG.zip" ## Initialization ## echo "*** Creating Backup Directory ***" -mkdir -pv $BACKUP_DIR -chmod -Rv 755 $BACKUP_DIR -chown -Rv root:root $BACKUP_DIR +sudo mkdir -pv "$BACKUP_DIR" +sudo chmod -Rv 755 "$BACKUP_DIR" +sudo chown -Rv root:root "$BACKUP_DIR" +cd "$BACKUP_DIR" ## Cleanup ## echo "*** Removing Old Backups ***" -sh -c 'rm -fv "$BASENAME"*"$TAG"*' +mv -v "$BASENAME"*"$TAG"* ~/TRASH/ +rm -v ~/TRASH/"${BASENAME}*${TAG}*.zip" ## Main echo "*** Creating backup at '$BACKUP' ***" sudo zip -rv "$BACKUP" \ - /etc /var/{log,mail,spool} /srv /boot \ - /usr/local/etc $EXTRA + /etc /var/{log,mail,spool} /srv /boot \ + /usr/local/etc $EXTRA status="$?" if [[ "$status" != 0 ]]; then - echo "*** ERROR: Failed to create '$BACKUP', file may be incorrect. ***" + echo "*** ERROR: Failed to create '$BACKUP', file may be incorrect. ***" fi if [[ -e "$BACKUP" ]]; then - ls -alh "$BACKUP" - echo "*** '$BACKUP' created successfully! ***"s + ls -alh "$BACKUP" + echo "*** '$BACKUP' created successfully! ***"s else - echo "*** '$BACKUP' not found! ***" - exit 1 + echo "*** '$BACKUP' not found! ***" + exit 1 fi exit 0 -- 2.49.1 From 0d5b095ad67a589549e723595f43a6a053dfa896 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Tue, 14 Oct 2025 08:14:47 -0700 Subject: [PATCH 27/35] Remove directory from basename variable. --- files/scripts/backup_system.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/files/scripts/backup_system.sh b/files/scripts/backup_system.sh index 1fe382d..6d01446 100755 --- a/files/scripts/backup_system.sh +++ b/files/scripts/backup_system.sh @@ -15,8 +15,8 @@ EXTRA="$1" TAG="System" DATE="`date "+%Y%m%d-%H%M%S"`" BACKUP_DIR="/srv/backup" -BASENAME="$BACKUP_DIR/Backup" -BACKUP="$BASENAME.$DATE.$HOSTNAME.$TAG.zip" +BASENAME="Backup" +BACKUP="$BACKUP_DIR/$BASENAME.$DATE.$HOSTNAME.$TAG.zip" ## Initialization ## -- 2.49.1 From 0dfbd0bd684688845dccdaea42f988f6f3a7cdc4 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Tue, 14 Oct 2025 08:18:20 -0700 Subject: [PATCH 28/35] Add `ls` alias for only showing size, not all the file data. --- tasks/general/acct_mgmt/users.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 7225641..7756c32 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -767,6 +767,7 @@ alias_ls: | alias l='ls' alias ll='ls -alh' + alias lh='ls -ash' alias_progs: | alias progs='ps -ef' alias_nethogs: | -- 2.49.1 From 5f882df33f5dc903bd8f743c91d7aad57bb20621 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Tue, 14 Oct 2025 08:22:16 -0700 Subject: [PATCH 29/35] Add ability to use aliases with sudo. --- tasks/general/acct_mgmt/users.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 7756c32..30bafc0 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -872,6 +872,9 @@ } alias ebooks="ebook-convert" alias convert="ebook-convert" + alias_sudo: | + # Allows for alias expansions when using sudo, such as doing "sudo ll". + alias sudo="sudo " - name: General | Account Management | Users | Files | Common Variable set_fact: @@ -946,6 +949,7 @@ {{ function_log }} {{ function_debian_upgrade }} {{ function_ebook_convert }} + {{ alias_sudo }} - name: General | Account Management | Users | Files | .bashrc blockinfile: -- 2.49.1 From d5393f60f3d8cac0669e4c594c424bb93e937e95 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Tue, 14 Oct 2025 08:34:33 -0700 Subject: [PATCH 30/35] Add cleanup for backups. --- tasks/general/acct_mgmt/users.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 30bafc0..b672303 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -415,6 +415,7 @@ function clean() { clean-trash clean-code + clean-backups } function_flatpak_usage: | function flatpak-usage() { @@ -787,6 +788,11 @@ } alias backup-system="backup" alias system-backup="backup" + alias check-backups="ll /srv/backup" + function clean-backup { + sh -c "rm -rfv /srv/backup/*.zip /srv/backup/TRASH" + } + alias clean-backups="clean-backup" function_log: | function log { echo -e "$1" -- 2.49.1 From 3410cf4426ca47b4934d8360e9dcec66f5218973 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Tue, 14 Oct 2025 08:35:21 -0700 Subject: [PATCH 31/35] Ensure backup's TRASH folder gets created and used properly. --- files/scripts/backup_system.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/files/scripts/backup_system.sh b/files/scripts/backup_system.sh index 6d01446..2b9716d 100755 --- a/files/scripts/backup_system.sh +++ b/files/scripts/backup_system.sh @@ -22,15 +22,16 @@ BACKUP="$BACKUP_DIR/$BASENAME.$DATE.$HOSTNAME.$TAG.zip" echo "*** Creating Backup Directory ***" sudo mkdir -pv "$BACKUP_DIR" -sudo chmod -Rv 755 "$BACKUP_DIR" +sudo mkdir -pv "$BACKUP_DIR/TRASH" +sudo chmod -Rv 775 "$BACKUP_DIR" sudo chown -Rv root:root "$BACKUP_DIR" -cd "$BACKUP_DIR" ## Cleanup ## echo "*** Removing Old Backups ***" -mv -v "$BASENAME"*"$TAG"* ~/TRASH/ -rm -v ~/TRASH/"${BASENAME}*${TAG}*.zip" +cd "$BACKUP_DIR" +sudo mv -v "$BASENAME"*"$TAG"* TRASH/ +sudo rm -v TRASH/* ## Main -- 2.49.1 From 4651726268475fa61353af6b0ac389af19c94418 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Tue, 14 Oct 2025 08:36:53 -0700 Subject: [PATCH 32/35] Do a full truncate of backup directory so that partial zips with weird hash names and no file extension get deleted as well. --- tasks/general/acct_mgmt/users.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index b672303..069f502 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -790,7 +790,7 @@ alias system-backup="backup" alias check-backups="ll /srv/backup" function clean-backup { - sh -c "rm -rfv /srv/backup/*.zip /srv/backup/TRASH" + sh -c "rm -rfv /srv/backup/*" } alias clean-backups="clean-backup" function_log: | -- 2.49.1 From b4cdea984e777c0874ddcde033c5107fbc5aea3a Mon Sep 17 00:00:00 2001 From: Hyperling Date: Tue, 14 Oct 2025 11:09:24 -0700 Subject: [PATCH 33/35] Add sleep to ansible-pull commands. Change weekly force to daily. Use explicit command rather than rarely used file. --- tasks/general/cron/ansible.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tasks/general/cron/ansible.yml b/tasks/general/cron/ansible.yml index 907041e..f68cb45 100644 --- a/tasks/general/cron/ansible.yml +++ b/tasks/general/cron/ansible.yml @@ -1,12 +1,18 @@ --- # Jobs relating to the ansible user. +# $RANDOM is anywhere from 0 to 32767 in BASH. This would be up to ~9 hours. +# $RANDOM / 10 can be up to about 3200 seconds, or ~55 minutes. +# $RANDOM / 20 can be up to about 1600 seconds, or ~27 minutes. +# $RANDOM / 50 can be up to about 650 seconds, or ~11 minutes. +# $RANDOM / 100 can be up to about 320 seconds, or ~5 minutes. +# This prevents multiple systems from hitting it at the exact same time. - name: General | Cron | Ansible | Create Subscriber Job cron: user: ansible name: "Ansible Sync" minute: "*/30" - job: "sudo {{ ansible_pull_exec.stdout }} -v -o -U {{ git_repo_http }} --checkout {{ branch }}" + job: "sleep $(( $RANDOM / 20 )); sudo {{ ansible_pull_exec.stdout }} -v -o -U {{ git_repo_http }} --checkout {{ branch }}" state: present disabled: "{{ 'yes' if no_telem else 'no' }}" @@ -14,7 +20,7 @@ cron: user: ansible name: "Ansible Weekly Forced Sync" - special_time: weekly - job: "{{ user_root.home }}/bin/scm.sh" + special_time: daily + job: "sleep $(( $RANDOM / 1 )); sudo {{ ansible_pull_exec.stdout }} -v -U {{ git_repo_http }} --checkout {{ branch }}" state: present disabled: "{{ 'yes' if no_telem else 'no' }}" -- 2.49.1 From 00c87328ab3bc0165f2a071329a55b01483a8aa6 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Tue, 14 Oct 2025 11:16:52 -0700 Subject: [PATCH 34/35] Don't back up backup files. --- files/scripts/backup_system.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/files/scripts/backup_system.sh b/files/scripts/backup_system.sh index 2b9716d..ae8b372 100755 --- a/files/scripts/backup_system.sh +++ b/files/scripts/backup_system.sh @@ -38,7 +38,8 @@ sudo rm -v TRASH/* echo "*** Creating backup at '$BACKUP' ***" sudo zip -rv "$BACKUP" \ /etc /var/{log,mail,spool} /srv /boot \ - /usr/local/etc $EXTRA + /usr/local/etc $EXTRA \ + -x /srv/backup status="$?" if [[ "$status" != 0 ]]; then -- 2.49.1 From d98bbb02a9a2b4d861239a31d3b457446360f8c8 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Tue, 14 Oct 2025 12:21:38 -0700 Subject: [PATCH 35/35] Quote the backup contents with an * so that backups get ignored properly. --- files/scripts/backup_system.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/scripts/backup_system.sh b/files/scripts/backup_system.sh index ae8b372..7992337 100755 --- a/files/scripts/backup_system.sh +++ b/files/scripts/backup_system.sh @@ -39,7 +39,7 @@ echo "*** Creating backup at '$BACKUP' ***" sudo zip -rv "$BACKUP" \ /etc /var/{log,mail,spool} /srv /boot \ /usr/local/etc $EXTRA \ - -x /srv/backup + -x "/srv/backup/*" status="$?" if [[ "$status" != 0 ]]; then -- 2.49.1