Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added auto mount script #494

Merged
merged 11 commits into from
Sep 19, 2024
89 changes: 89 additions & 0 deletions tabs/system-setup/9-auto-mount.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
#!/bin/sh -e

. ../common-script.sh

# Function to display available drives and allow the user to select one
select_drive() {
clear
printf "%b\n" "Available drives and partitions:"
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,LABEL,UUID | grep -v 'loop' # list all non-loop devices
printf "\n"
printf "%b\n" "Enter the drive/partition name (e.g., sda1, sdb1): "
read -r drive_name
# Check if the input is valid
if lsblk | grep -q "${drive_name}"; then
partition="/dev/${drive_name}"
else
printf "%b\n" "Invalid drive/partition name!"
guruswarupa marked this conversation as resolved.
Show resolved Hide resolved
exit 1
fi
}

# Function to get UUID and FSTYPE of the selected drive
get_uuid_fstype() {
UUID=$(blkid -s UUID -o value "${partition}")
FSTYPE=$(lsblk -no FSTYPE "${partition}")
NAME=$(lsblk -no NAME "${partition}")

if [ -z "$UUID" ]; then
printf "%b\n" "Failed to retrieve the UUID. Exiting."
guruswarupa marked this conversation as resolved.
Show resolved Hide resolved
exit 1
fi

if [ -z "$FSTYPE" ]; then
printf "%b\n" "Failed to retrieve the filesystem type. Exiting."
guruswarupa marked this conversation as resolved.
Show resolved Hide resolved
exit 1
fi
}

# Function to create a mount point
create_mount_point() {
printf "%b\n" "Enter the mount point path (e.g., /mnt/hdd): "
read -r mount_point
if [ ! -d "$mount_point" ]; then
printf "%b\n" "Mount point doesn't exist. Creating it..."
guruswarupa marked this conversation as resolved.
Show resolved Hide resolved
$ESCALATION_TOOL mkdir -p "$mount_point"
else
printf "%b\n" "Mount point already exists."
guruswarupa marked this conversation as resolved.
Show resolved Hide resolved
fi
}

# Function to update /etc/fstab with a comment on the first line and the actual entry on the second line
update_fstab() {
printf "%b\n" "Adding entry to /etc/fstab..."
guruswarupa marked this conversation as resolved.
Show resolved Hide resolved
$ESCALATION_TOOL cp /etc/fstab /etc/fstab.bak # Backup fstab
guruswarupa marked this conversation as resolved.
Show resolved Hide resolved

# Prepare the comment and the fstab entry
comment="# Mount for /dev/$NAME"
fstab_entry="UUID=$UUID $mount_point $FSTYPE defaults 0 2"

# Append the comment and the entry to /etc/fstab
printf "%b\n" "$comment" | $ESCALATION_TOOL tee -a /etc/fstab > /dev/null
printf "%b\n" "$fstab_entry" | $ESCALATION_TOOL tee -a /etc/fstab > /dev/null
printf "%b\n" "" | $ESCALATION_TOOL tee -a /etc/fstab > /dev/null
guruswarupa marked this conversation as resolved.
Show resolved Hide resolved

printf "%b\n" "Entry added to /etc/fstab:"
printf "%b\n" "$comment"
printf "%b\n" "$fstab_entry"
}


# Function to mount the drive
mount_drive() {
printf "%b\n" "Mounting the drive..."
$ESCALATION_TOOL mount -a
if mount | grep "$mount_point" > /dev/null; then
printf "%b\n" "Drive mounted successfully at $mount_point."
guruswarupa marked this conversation as resolved.
Show resolved Hide resolved
else
printf "%b\n" "${RED}Failed to mount the drive.${RC}"
exit 1
fi
}

checkEnv
checkEscalationTool
select_drive
get_uuid_fstype
create_mount_point
update_fstab
mount_drive
6 changes: 5 additions & 1 deletion tabs/system-setup/tab_data.toml
Original file line number Diff line number Diff line change
Expand Up @@ -89,4 +89,8 @@ script = "5-samba-ssh-setup.sh"

[[data]]
name = "Docker Setup"
script = "6-docker-setup.sh"
script = "6-docker-setup.sh"

[[data]]
name = "Auto Mount Drive"
script = "9-auto-mount.sh"
Loading