From ffa8c50c93c3c8d69d7e34cb4f4d9d26c9d4eeb2 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Tue, 22 Apr 2025 03:19:06 +0200 Subject: [PATCH] Fix. --- .../catgirl/home/plom/.config/catgirl/libera | 1 + testing/scripts/_setup_secrets_user.sh | 5 +- testing/scripts/lib/INSTALLER_VERSION | 1 + testing/scripts/lib/constants_installer | 2 +- testing/scripts/lib/trapp | 8 +++ testing/scripts/make_writable_installer.sh | 68 ++++++++++--------- testing/scripts/pull_catgirl_logs.sh | 12 ++-- testing/scripts/update_preseed.sh | 3 +- 8 files changed, 58 insertions(+), 42 deletions(-) create mode 120000 testing/scripts/lib/INSTALLER_VERSION create mode 100644 testing/scripts/lib/trapp diff --git a/bookworm/copy/catgirl/home/plom/.config/catgirl/libera b/bookworm/copy/catgirl/home/plom/.config/catgirl/libera index f27baa7..45a1c6a 100644 --- a/bookworm/copy/catgirl/home/plom/.config/catgirl/libera +++ b/bookworm/copy/catgirl/home/plom/.config/catgirl/libera @@ -1,4 +1,5 @@ host = irc.libera.chat join = #plomtest sasl-plain = plomtest:REPLACE_WITH_IRC_PASSWORD +nick = plomtest log diff --git a/testing/scripts/_setup_secrets_user.sh b/testing/scripts/_setup_secrets_user.sh index a485ca0..8d3f9bd 100644 --- a/testing/scripts/_setup_secrets_user.sh +++ b/testing/scripts/_setup_secrets_user.sh @@ -11,6 +11,7 @@ cd $(dirname "$0") . lib/constants_borg # NAME_BORGAPP . lib/mount_secrets # mount_secrets, copy_and_unmount_secrets . lib/retry_until +. lib/trapp PATH_REPOS="${HOME}/repos" REPOS_SITE_DOMAIN=plomlompom.com @@ -30,10 +31,10 @@ echo "\nSetting up ~/.ssh" cp -a "${PATH_SECRETS_SSH}" "${PATH_USER_SSH}" eval $(ssh-agent) stty -echo -trap 'stty echo' EXIT INT TERM +trapp stty echo retry_until 1 'echo ""' 'ssh-add -q' 'echo "Aborting due to ssh-add error"' stty echo -trap '' EXIT INT TERM +trapp echo "\n\nSetting up ~/repos" REPOS_SITE_LOGIN="${USERNAME}@${REPOS_SITE_DOMAIN}" diff --git a/testing/scripts/lib/INSTALLER_VERSION b/testing/scripts/lib/INSTALLER_VERSION new file mode 120000 index 0000000..74e85c5 --- /dev/null +++ b/testing/scripts/lib/INSTALLER_VERSION @@ -0,0 +1 @@ +../../../bookworm/scripts/lib/INSTALLER_VERSION \ No newline at end of file diff --git a/testing/scripts/lib/constants_installer b/testing/scripts/lib/constants_installer index 92e60df..76e1589 100644 --- a/testing/scripts/lib/constants_installer +++ b/testing/scripts/lib/constants_installer @@ -1,2 +1,2 @@ FILENAME_PRESEED_CFG=preseed.cfg -PATH_PRESEED_CFG="../${FILENAME_PRESEED_CFG}" +PATH_PRESEED_CFG=$(realpath "../${FILENAME_PRESEED_CFG}") diff --git a/testing/scripts/lib/trapp b/testing/scripts/lib/trapp new file mode 100644 index 0000000..fb550f7 --- /dev/null +++ b/testing/scripts/lib/trapp @@ -0,0 +1,8 @@ +trapp() { + if [ -z "$@" ]; then + _NEW_COMMAND='-' + else + _NEW_COMMAND="$@" + fi + trap "${_NEW_COMMAND}" EXIT TERM HUP INT +} diff --git a/testing/scripts/make_writable_installer.sh b/testing/scripts/make_writable_installer.sh index 39e1396..59b9805 100755 --- a/testing/scripts/make_writable_installer.sh +++ b/testing/scripts/make_writable_installer.sh @@ -10,6 +10,8 @@ cd $(dirname "$0") . lib/constants_installer # FILENAME_PRESEED_CFG, PATH_PRESEED_CFG . lib/expect_n_args . lib/get_mountable_device_path +. lib/path_tmp_timestamped +. lib/trapp expect_n_args 1 1 'DEVICE (e.g. "sdb")' $@ abort_if_not_user root @@ -18,46 +20,51 @@ abort_if_command_unknown mkfs.vfat abort_if_command_unknown parted abort_if_command_unknown rsync abort_if_command_unknown wget -PATH_STICK="$(get_mountable_device_path $1)" - +PATH_DEV="$(get_mountable_device_path $1)" PATH_MNT_ISO=/mnt/iso + +PATH_PROCESSING="$(path_tmp_timestamped make_writable_installer)" +RM_PROCESSING="rm -rf ${PATH_PROCESSING}" +echo "Setting up processing directory at ${PATH_PROCESSING} …" +mkdir "${PATH_PROCESSING}" +trapp "${RM_PROCESSING}" +cd "${PATH_PROCESSING}" + FILENAME_ISO="debian-${INSTALLER_VERSION}-amd64-netinst.iso" -echo "Retrieving ${FILENAME_ISO}." +echo "Retrieving ${FILENAME_ISO} …" URL_ISO="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/${FILENAME_ISO}" -PATH_ISO="/tmp/${FILENAME_ISO}" -wget --output-document "${PATH_ISO}" "${URL_ISO}" +wget --quiet --output-document "${FILENAME_ISO}" "${URL_ISO}" -echo "Preparing partition/filesystem on ${PATH_STICK}." -parted --script "${PATH_STICK}" mklabel msdos -parted --script "${PATH_STICK}" mkpart primary fat32 0% 100% -PATH_PARTITION="${PATH_STICK}1" -mkfs.vfat "${PATH_PARTITION}" +echo "Preparing partition/filesystem on ${PATH_DEV} …" +parted --script "${PATH_DEV}" mklabel msdos +parted --script "${PATH_DEV}" mkpart primary fat32 0% 100% +PATH_PARTITION="${PATH_DEV}1" +mkfs.vfat "${PATH_PARTITION}" > /dev/null -echo "Mounting ${PATH_MNT_ISO} and ${PATH_MNT_STICK}." -mkdir -p "${PATH_MNT_ISO}" "${PATH_MNT_STICK}" -mount "${PATH_PARTITION}" "${PATH_MNT_STICK}" -mount -o loop "${PATH_ISO}" "${PATH_MNT_ISO}" -do_umounts() { +PATH_MNT_DEV='/mnt/'$(basename "${PATH_PARTITION}") +echo -n "Mounting ${PATH_MNT_ISO} and ${PATH_MNT_DEV} …" +mkdir -p "${PATH_MNT_ISO}" "${PATH_MNT_DEV}" +do_umount() { + echo "Unmounting $1 …" set +e - echo "Unmounting ${PATH_MNT_ISO}" - umount "${PATH_MNT_ISO}" - echo "Unmounting ${PATH_MNT_STICK}" - umount "${PATH_MNT_STICK}" + umount "$1" set -e } -trap do_umounts EXIT INT TERM +mount "${PATH_PARTITION}" "${PATH_MNT_DEV}" +trapp "${RM_PROCESSING}; do_umount ${PATH_MNT_DEV}" +mount -o loop "${FILENAME_ISO}" "${PATH_MNT_ISO}" 2>&1 | sed 's|mount: /mnt/iso: WARNING: source write-protected, mounted read-only.||' +trapp "${RM_PROCESSING}; do_umount ${PATH_MNT_DEV}; do_umount ${PATH_MNT_ISO}" -echo "Copying contents of ${PATH_MNT_ISO} to ${PATH_MNT_STICK}/." -PATH_RSYNC_ERRORS=/tmp/rsync_errors +echo "Copying contents of ${PATH_MNT_ISO} to ${PATH_MNT_DEV}/ …" +FILENAME_RSYNC_ERRORS="rsync_errors" set +e -rsync -a "${PATH_MNT_ISO}/" "${PATH_MNT_STICK}/" 2> "${PATH_RSYNC_ERRORS}" +rsync -a "${PATH_MNT_ISO}/" "${PATH_MNT_DEV}/" 2> "${FILENAME_RSYNC_ERRORS}" RESULT=$? set -e if [ "${RESULT}" != "0" ]; then - echo 'rsync errors:' - cat "${PATH_RSYNC_ERRORS}" - echo 'rsync encountered errors, see above – continue? (Y/N)' - rm "${PATH_RSYNC_ERRORS}" + echo 'RSYNC ERRORS:' + cat "${FILENAME_RSYNC_ERRORS}" + echo '\nrsync encountered errors, see above – continue? (Y/N)' read ANSWER FIRST_CHAR=$(echo "${ANSWER}" | cut -c1) if ! [ "${FIRST_CHAR}" = 'y' -o "${FIRST_CHAR}" = 'Y' ]; then @@ -65,9 +72,8 @@ if [ "${RESULT}" != "0" ]; then fi fi -echo "Installing preseed file." -cp "${PATH_PRESEED_CFG}" "${PATH_MNT_STICK}/" -sed --in-place 's/ --- / --- preseed\/file=\/cdrom\/'"${FILENAME_PRESEED_CFG}"' /g' "${PATH_MNT_STICK}/boot/grub/grub.cfg" +echo "Installing preseed file …" +cp "${PATH_PRESEED_CFG}" "${PATH_MNT_DEV}/" +sed --in-place 's/ --- / --- preseed\/file=\/cdrom\/'"${FILENAME_PRESEED_CFG}"' /g' "${PATH_MNT_DEV}/boot/grub/grub.cfg" -rm "${PATH_ISO}" echo "Done!" diff --git a/testing/scripts/pull_catgirl_logs.sh b/testing/scripts/pull_catgirl_logs.sh index 69b0f20..c13676e 100755 --- a/testing/scripts/pull_catgirl_logs.sh +++ b/testing/scripts/pull_catgirl_logs.sh @@ -5,6 +5,7 @@ cd $(dirname "$0") . lib/abort_if_offline . lib/expect_n_args . lib/path_tmp_timestamped +. lib/trapp PATH_LOGS_LOCAL="${HOME}/chatlogs/catgirl" PATH_DECRYPTION_KEY_ENCRYPTED="${HOME}/.ssh/id_rsa" @@ -17,11 +18,10 @@ expect_n_args 1 1 '(server)' $@ SERVER="$1" PATH_PROCESSING="$(path_tmp_timestamped pull_catgirl_logs)" -ON_TRAP_RM_PROCESSING="rm -rf ${PATH_PROCESSING}" -ON_TRAP="${ON_TRAP_RM_PROCESSING}" +RM_PROCESSING="rm -rf ${PATH_PROCESSING}" echo "Setting up processing directory at ${PATH_PROCESSING} …" mkdir "${PATH_PROCESSING}" -trap "${ON_TRAP}" EXIT INT TERM +trapp "${RM_PROCESSING}" cd "${PATH_PROCESSING}" # Highly questionable acrobatics to work around "age" not supporting ssh-agent. @@ -30,12 +30,10 @@ cp "${PATH_DECRYPTION_KEY_ENCRYPTED}" "${PATH_DECRYPTION_KEY}" # (NB: not using lib/retry_until here cuz ssh-keygen returns non-workable exit codes) echo -n 'Enter key decryption password: ' stty -echo -ON_TRAP="${ON_TRAP}; stty echo" -trap "${ON_TRAP}" EXIT INT TERM +trapp "${RM_PROCESSING}; stty echo" read SSHPASS stty echo -ON_TRAP="${ON_TRAP_RM_PROCESSING}" -trap "${ON_TRAP}" EXIT INT TERM +trapp "${RM_PROCESSING}" echo '' echo "\n\n" | ssh-keygen -q -P "${SSHPASS}" -p -f "${PATH_DECRYPTION_KEY}" > /dev/null diff --git a/testing/scripts/update_preseed.sh b/testing/scripts/update_preseed.sh index 0def2f6..bf3da3a 100755 --- a/testing/scripts/update_preseed.sh +++ b/testing/scripts/update_preseed.sh @@ -5,6 +5,7 @@ cd $(dirname "$0") . lib/constants_installer # FILENAME_PRESEED_CFG, PATH_PRESEED_CFG . lib/expect_n_args . lib/get_mountable_device_path +. lib/trapp expect_n_args 4 4 'DEVICE (e.g. "sdb1") ROOT_PASSWORD WIFI_ESSID WIFI_PASSWORD' $@ DEVICE_NAME="$1" @@ -17,7 +18,7 @@ PATH_DEVICE="$(get_mountable_device_path ${DEVICE_NAME})" PATH_MOUNTED="/media/$1" echo "Mounting ${PATH_DEVICE} …" pmount "${DEVICE_NAME}" -trap "echo 'Unmounting '${PATH_DEVICE}; pumount ${DEVICE_NAME}" EXIT INT TERM +trapp "echo 'Unmounting '${PATH_DEVICE}; pumount ${DEVICE_NAME}" echo "Copying ${PATH_PRESEED_CFG} …" PATH_MOUNTED_PRESEED_CFG="${PATH_MOUNTED}/${FILENAME_PRESEED_CFG}" cp "${PATH_PRESEED_CFG}" "${PATH_MOUNTED_PRESEED_CFG}" -- 2.30.2