function hetzner-rescue-configure { local host="${1}" local packages=( 'byobu' 'mosh' ) # apt / conf echo -n "\ Acquire::AllowInsecureRepositories False; Acquire::AllowWeakRepositories False; Acquire::AllowDowngradeToInsecureRepositories False; Acquire::Check-Valid-Until True; APT::Install-Recommends False; APT::Install-Suggests False; APT::Get::Show-Versions True; Dir::Etc::SourceParts ''; Dpkg::Progress True; " > '/etc/apt/apt.conf' # apt / sources echo -n "\ deb https://deb.debian.org/debian bookworm main non-free-firmware contrib non-free deb https://deb.debian.org/debian bookworm-backports main non-free-firmware contrib non-free deb https://deb.debian.org/debian bookworm-updates main non-free-firmware contrib non-free deb https://deb.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free " > '/etc/apt/sources.list' # bash / rc main_link_bashrc # host name hostname "${host}" # locales echo -n "\ en_US.UTF-8 UTF-8 fr_FR.UTF-8 UTF-8 " > '/etc/locale.gen' # generate locales locale-gen # update catalog apt-get update # debian_disable_frontend # install packages apt-get install --assume-yes "${packages[@]}" # apt_clean_cache } function hetzner-rescue-install { local release='bookworm' local packages=( # installed 'cryptsetup-bin' 'rsync' 'file' 'htop' 'lsof' 'parted' 'mdadm' 'lvm2' 'tree' 'uuid-runtime' # install 'lshw' 'micro' 'grub-efi-amd64-bin' 'grub-pc-bin' 'iotop' 'exa' 'lf' 'ncdu' 'nnn' 'ranger' 'squashfs-tools' ) local backports=( # install 'git' ) # update catalog apt-get update # debian_disable_frontend # upgrade packages apt-get upgrade --assume-yes # apt_clean_cache # install packages apt-get install --assume-yes "${packages[@]}" # apt_clean_cache # install backports apt-get install --assume-yes \ --target-release "${release}-backports" "${backports[@]}" # apt_clean_cache } function hetzner-rescue-upload { local host="${1}" if [ "${host}" ] ; then local user='root' # local user_host="${user}@${host}" # remove fingerprints ssh-keygen -R "${host}" # copy ssh id ssh-copy-id \ -o 'StrictHostKeyChecking=accept-new' \ "${user_host}" # upload root rsync --delete --recursive "${MAIN_BASH_ROOT}/" "${user_host}:/etc/bash/" # call setup # TODO variable ssh "${user_host}" -- "source '/etc/bash/main.sh' ; hetzner-rescue-configure '${host}'" # create session ssh "${user_host}" -- byobu new-session -d # send keys ssh "${user_host}" -- byobu send-keys 'hetzner-rescue-install' 'C-m' # attach session mosh "${user_host}" -- byobu attach-session else echo 'Host?' return 1 fi }