From 1904961a1713819e672abc2699e958882090b828 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Tue, 4 Mar 2025 00:16:56 +0100 Subject: [PATCH] Improve setup scripts. --- testing/home/t490s/.nonpath_bins/status.sh | 2 +- testing/scripts/misc.sh | 15 ++++++++- testing/scripts/setup_desktop.sh | 1 + ...setup_secrets.sh => setup_secrets_root.sh} | 32 +++---------------- testing/scripts/setup_secrets_user.sh | 32 +++++++++++++++++++ 5 files changed, 52 insertions(+), 30 deletions(-) rename testing/scripts/{setup_secrets.sh => setup_secrets_root.sh} (53%) create mode 100755 testing/scripts/setup_secrets_user.sh diff --git a/testing/home/t490s/.nonpath_bins/status.sh b/testing/home/t490s/.nonpath_bins/status.sh index 17a5fa0..740bc7a 100755 --- a/testing/home/t490s/.nonpath_bins/status.sh +++ b/testing/home/t490s/.nonpath_bins/status.sh @@ -6,7 +6,7 @@ while true; do printf ' [\n' printf ' {"full_text": "%s"},\n' "$(ip -4 addr show scope global | grep -oP '(?<=inet\s)\d+(\.\d+){3}')" printf ' {"full_text": "%d° C"},\n' $(calc "$(cat /sys/class/thermal/thermal_zone0/temp) // ${MEGA}") - printf ' {"full_text": "%s"},\n' "$(date +'%Y-%m-%d %X')" + printf ' {"full_text": "%s"},\n' "$(date +'%Y-%m-%d %H:%M:%S/%Z')" printf ' ],\n' sleep 1 done diff --git a/testing/scripts/misc.sh b/testing/scripts/misc.sh index 71f8ba8..cbf0c5c 100644 --- a/testing/scripts/misc.sh +++ b/testing/scripts/misc.sh @@ -1,6 +1,5 @@ #!/bin/sh set -e -set -x . ../../constants.sh . "${PATH_MANY_MISC}" @@ -35,3 +34,17 @@ get_system_name_arg() { fi done } + +abort_if_exists() { + if [ -e "${1}" ]; then + echo "Aborting because ${1} already exists." + exit 1 + fi +} + +abort_if_not_user() { +if [ `whoami` != "$1" ]; then + echo "Must be run as $1." + exit 1 +fi +} diff --git a/testing/scripts/setup_desktop.sh b/testing/scripts/setup_desktop.sh index c4cc7ed..20dd2af 100755 --- a/testing/scripts/setup_desktop.sh +++ b/testing/scripts/setup_desktop.sh @@ -85,5 +85,6 @@ usermod -a -G sudo "${USERNAME}" for root in "${PATH_MANY}" '..'; do copy_dirtree "${root}/${PATH_REL_HOME}" "${PATH_USER_HOME}" ${MIN_MODULES} user desktop done +cp -a "${PATH_REPO}" "${PATH_USER_HOME}/" chown -R "${USERNAME}:${USERNAME}" "${PATH_USER_HOME}" passwd "${USERNAME}" diff --git a/testing/scripts/setup_secrets.sh b/testing/scripts/setup_secrets_root.sh similarity index 53% rename from testing/scripts/setup_secrets.sh rename to testing/scripts/setup_secrets_root.sh index f8e25aa..1171043 100755 --- a/testing/scripts/setup_secrets.sh +++ b/testing/scripts/setup_secrets_root.sh @@ -1,28 +1,13 @@ #!/bin/sh set -e -set -x . ./misc.sh -# Ensure we're running as root. -if [ `whoami` != "root" ]; then - echo "Must be run as root." - exit 1 -fi +abort_if_not_user root -# Ensure we're not overwriting anything. -abort_if_exists() { - if [ -e "${1}" ]; then - echo "Aborting because ${1} already exists." - exit 1 - fi -} +# Mount secrets device and copy over its content. PATH_REL_SECRETS=to_usb PATH_SECRETS=${PATH_USER_HOME}/${PATH_REL_SECRETS} -PATH_SSH=${PATH_USER_HOME}/${PATH_REL_LOCAL_SSH} abort_if_exists "${PATH_SECRETS}" -abort_if_exists "${PATH_USER_SSH}" - -# Mount secrets device and copy over its content. expect_min_n_args 1 "(device name)" "$@" SECRETS_DEV=$1 PATH_SOURCE=/media/${SECRETS_DEV}/${PATH_REL_SECRETS} @@ -49,17 +34,8 @@ while [ true ]; do fi done cp -a "${PATH_SOURCE}" "${PATH_SECRETS}" -chown -R plom:plom "${PATH_SECRETS}" pumount "${SECRETS_DEV}" echo "You can remove ${PATH_DEV} now." +chown -R "${USERNAME}:${USERNAME}" "${PATH_SECRETS}" -# Set up SSH authentication. -echo "Setting up .ssh" -PATH_PRIVATE_KEY=${PATH_USER_SSH}/${FILENAME_PRIVATE_KEY} -PATH_PUBLIC_KEY=${PATH_USER_SSH}/${FILENAME_PUBLIC_KEY} -su -lc "mkdir -p ${PATH_USER_SSH} && cp ${PATH_SECRETS}/${FILENAME_PRIVATE_KEY} ${PATH_PRIVATE_KEY}" plom -while [ ! -s "${PATH_PUBLIC_KEY}" ]; do - set +e - su -lc "ssh-keygen -y -f ${PATH_PRIVATE_KEY} > ${PATH_PUBLIC_KEY}" plom - set -e -done +echo "Do run setup_secrets_user.sh now as user." diff --git a/testing/scripts/setup_secrets_user.sh b/testing/scripts/setup_secrets_user.sh new file mode 100755 index 0000000..76e7e83 --- /dev/null +++ b/testing/scripts/setup_secrets_user.sh @@ -0,0 +1,32 @@ +#!/bin/sh +set -e +. ./misc.sh + +abort_if_not_user "${USERNAME}" +abort_if_exists "${PATH_USER_SSH}" +PATH_REPOS="${HOME}/repos" +abort_if_exists "${PATH_REPOS}" + +echo "Setting up ~/.ssh" +PATH_PRIVATE_KEY="${PATH_USER_SSH}/${FILENAME_PRIVATE_KEY}" +PATH_PUBLIC_KEY="${PATH_USER_SSH}/${FILENAME_PUBLIC_KEY}" +mkdir -p "${PATH_USER_SSH}" && cp "${PATH_SECRETS}/${FILENAME_PRIVATE_KEY}" "${PATH_PRIVATE_KEY}" +while [ ! -s "${PATH_PUBLIC_KEY}" ]; do + stty -echo + set +e + ssh-keygen -y -f "${PATH_PRIVATE_KEY}" > "${PATH_PUBLIC_KEY}" + set -e + stty +echo +done + +echo "Setting up ~/repos" +REPOS_SITE_DOMAIN=plomlompom.com +REPOS_SITE_LOGIN="${USERNAME}@${REPOS_SITE_DOMAIN}" +REMOTE_PATH_REPOS=/var/repos +eval $(ssh-agent) && ssh-add +ssh-keyscan -H "${REPOS_SITE_DOMAIN}" >> "${PATH_USER_SSH}/known_hosts" +mkdir "${PATH_REPOS}" +REPO_NAMES=$(ssh ${REPOS_SITE_LOGIN} "cd $REMOTE_PATH_REPOS && ls -1") +cat "${REPO_NAMES}" | while read REPO_NAME; do + git clone "${REPOS_SITE_LOGIN}:${REMOTE_PATH_REPOS}/${REPO_NAME}" +done -- 2.30.2