cd $(dirname "$0")
. lib/constants_ssh # PATH_USER_SSH
. lib/expect_n_args
+. lib/path_tmp_timestamped
+. lib/trapp
PATH_KNOWN_HOSTS="${PATH_USER_SSH}/known_hosts"
+URL_REPO_CLONE='https://plomlompom.com/repos/clone/config'
expect_n_args 1 1 '(server)' $@
SERVER="$1"
-echo '\nKnow host.\n'
+echo "In ${PATH_KNOWN_HOSTS}, removing previous entry for ${SERVER} if found …"
+ssh-keygen -f "${PATH_KNOWN_HOSTS}" -R "${SERVER}" > /dev/null
+
+echo 'Scanning server for new key to add to file …'
+PATH_LOG_KEYSCAN_STDERR=$(path_tmp_timestamped)
+CMD_RM_LOG="rm ${PATH_LOG_KEYSCAN_STDERR}"
set +e
-ssh-keygen -f "${PATH_KNOWN_HOSTS}" -R "${SERVER}"
-ssh-keyscan "${SERVER}" >> "${PATH_KNOWN_HOSTS}"
+ssh-keyscan -v "${SERVER}" >> "${PATH_KNOWN_HOSTS}" 2> "${PATH_LOG_KEYSCAN_STDERR}"
RESULT=$?
+set -e
+trapp "${CMD_RM_LOG}"
if [ "${RESULT}" != "0" ]; then
- echo "ERROR: For some reason ssh-keyscan returned non-zero exit code, here's what a re-run with -v looks like:"
- ssh-keyscan -v "${SERVER}"
- exit 1
+ echo "ERROR: For some reason ssh-keyscan returned non-zero exit code, here's it's stderr log:"
+ cat "${PATH_LOG_KEYSCAN_STDERR}"
+ exit "${RESULT}"
fi
-set -e
+${CMD_RM_LOG}
+trapp
-echo '\nAsking for new root password.\n'
+CMD_SSH="ssh root@${SERVER}"
+
+echo 'On server, asking for new root password …'
+stty echonl
stty -echo
-ssh "root@${SERVER}" 'printf "\n\n" && passwd'
+${CMD_SSH} 'passwd'
stty echo
-echo '\nSetting up config repo.'
-ssh "root@${SERVER}" 'apt-get -q update && apt-get -q -y install git && git clone https://plomlompom.com/repos/clone/config'
+echo 'On server, updating package database …'
+${CMD_SSH} 'apt-get update > /dev/null'
+
+echo 'On server, installing git …'
+${CMD_SSH} 'DEBIAN_FRONTEND=noninteractive apt-get -y install git > /dev/null'
+
+echo 'On server, pulling config repo …'
+${CMD_SSH} "git clone -q ${URL_REPO_CLONE}"
-echo "\nServer ready, log in with: ssh root@${SERVER}"
+echo "Server ready, log in with: ssh root@${SERVER}"
export DEBIAN_FRONTEND=noninteractive
apt_update_to_full_upgrade() {
- apt-get -q -q update
- apt-get -q -q -y -o Dpkg::Options::='--force-confnew' upgrade
- apt-get -q -q -y -o Dpkg::Options::='--force-confnew' full-upgrade
+ echo '\nUpdating package database …\n'
+ apt-get update > /dev/null
+ echo '\nSoft-upgrading …\n'
+ apt-get -y -o Dpkg::Options::='--force-confnew' upgrade
+ echo '\nFull-upgrading …\n'
+ apt-get -y -o Dpkg::Options::='--force-confnew' full-upgrade
+ echo ''
}
-cp "${PATH_COPY_TAG}${PATH_ETC_APT_CONF}/99_minimize_dependencies" "${PATH_ETC_APT_CONF}/"
+PATH_CONF_MIN_DEPS="${PATH_COPY_TAG}${PATH_ETC_APT_CONF}/99_minimize_dependencies"
+echo "Copying over ${PATH_CONF_MIN_DEPS} …"
+cp "${PATH_CONF_MIN_DEPS}""${PATH_ETC_APT_CONF}/"
+
apt_update_to_full_upgrade
-cp "${PATH_COPY_TAG}${PATH_ETC_APT}/sources.list" "${PATH_ETC_APT}/"
-apt-get clean
+PATH_CONF_SOURCES="${PATH_COPY_TAG}${PATH_ETC_APT}/sources.list"
+echo "Copying over ${PATH_CONF_SOURCES} …"
+cp "${PATH_CONF_SOURCES}" "${PATH_ETC_APT}/"
+
apt_update_to_full_upgrade
+
+echo '\nPurging …\n'
apt-get -q -q -y autopurge