function hetzner-rescue-configure { local host="${1}" local package local packages=( 'mosh' 'screen' 'tmux' 'byobu' 'apt-file' ) # 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 for package in "${packages[@]}" ; do echo ; echo "${package}" apt-get install \ --assume-yes \ "${package}" apt_clean_cache done # update catalog apt-get update } function hetzner-rescue-install { local package local release='bookworm' local packages=( # installed 'dmidecode' 'efibootmgr' 'pciutils' 'usbutils' 'parted' 'mdadm' 'cryptsetup-bin' 'lvm2' 'btrfs-progs' 'dosfstools' 'git' 'nano' 'python3' 'rsync' 'vim' 'file' 'htop' 'lsof' 'man-db' 'tree' 'uuid-runtime' # install 'lshw' 'squashfs-tools' 'grub-efi-amd64-bin' 'grub-pc-bin' 'libdigest-sha3-perl' 'micro' 'iotop' 'exa' 'ipcalc' 'lf' 'ncdu' 'nnn' 'ranger' ) local backports=( ) # update catalog apt-get update # debian_disable_frontend # upgrade packages apt-get upgrade --assume-yes # apt_clean_cache # install packages for package in "${packages[@]}" ; do echo ; echo "${package}" apt-get install \ --assume-yes \ "${package}" apt_clean_cache done # install backports for package in "${backports[@]}" ; do echo ; echo "${package}" apt-get install \ --assume-yes \ --target-release "${release}-backports" \ "${package}" apt_clean_cache done } 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 }