72 lines
1.8 KiB
Bash
Executable file
72 lines
1.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
unmount_usb() {
|
|
if mountpoint -q /mnt/usb; then
|
|
sudo umount /mnt/usb
|
|
echo -e "\e[0;32mUSB drive unmounted.\e[0m"
|
|
fi
|
|
}
|
|
|
|
mount_usb() {
|
|
if mountpoint -q /mnt/usb; then
|
|
echo -e "\e[0;32mUSB drive already mounted.\e[0m"
|
|
else
|
|
device_found=false
|
|
for dev in sda sdb sdc sdd sde sdf sdg sdh sdi sdj sdk sdl; do
|
|
if sudo blkid /dev/$dev | grep -iq 'TYPE="vfat"'; then
|
|
device_found=true
|
|
mkdir -p /mnt/usb
|
|
sudo mount /dev/$dev /mnt/usb && { echo -e "\e[0;32mUSB drive mounted successfully on /dev/$dev.\e[0m"; break; } || echo -e "\e[0;31mFailed to mount /dev/$dev.\e[0m"
|
|
fi
|
|
done
|
|
if [ "$device_found" = false ]; then
|
|
echo -e "\e[0;31mNo USB devices found.\e[0m"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
setup_ssh_directory() {
|
|
export SSH_DIR=/root/.ssh
|
|
mkdir -p $SSH_DIR
|
|
}
|
|
|
|
check_file_exists() {
|
|
if [[ ! -f $1 ]]; then
|
|
echo -e "\e[0;31mError: File $1 does not exist.\e[0m"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
copy_keys() {
|
|
check_file_exists "/mnt/usb/id_ed25519_agenix.pub"
|
|
check_file_exists "/mnt/usb/id_ed25519_agenix"
|
|
cp /mnt/usb/id_ed25519_agenix.pub $SSH_DIR
|
|
cp /mnt/usb/id_ed25519_agenix $SSH_DIR
|
|
chmod 600 $SSH_DIR/id_ed25519_{agenix,agenix.pub}
|
|
echo -e "\e[0;32mKeys copied successfully.\e[0m"
|
|
}
|
|
|
|
set_keys() {
|
|
check_file_exists "/mnt/usb/id_ed25519_github.pub"
|
|
check_file_exists "/mnt/usb/id_ed25519_github"
|
|
cp /mnt/usb/id_ed25519_github.pub $SSH_DIR/id_ed25519.pub
|
|
cp /mnt/usb/id_ed25519_github $SSH_DIR/id_ed25519
|
|
chmod 600 $SSH_DIR/id_ed25519
|
|
chmod 644 $SSH_DIR/id_ed25519.pub
|
|
}
|
|
|
|
change_ownership() {
|
|
chown nixos:wheel $SSH_DIR/id_ed25519{,.pub}
|
|
chown nixos:wheel $SSH_DIR/id_ed25519_{agenix,agenix.pub}
|
|
}
|
|
|
|
trap unmount_usb EXIT
|
|
|
|
setup_ssh_directory
|
|
mount_usb
|
|
copy_keys
|
|
set_keys
|
|
change_ownership
|
|
unmount_usb
|