71 lines
1.6 KiB
Bash
71 lines
1.6 KiB
Bash
#!/bin/bash
|
|
|
|
# 1. Lista partições físicas disponíveis (excluindo loop e rom)
|
|
DISCOS=($(lsblk -lpno NAME,TYPE | grep part | awk '{print $1}' | grep -vE 'loop|sr|rom'))
|
|
|
|
# Verifica se encontrou discos
|
|
if [ ${#DISCOS[@]} -eq 0 ]; then
|
|
echo "Nenhuma partição encontrada."
|
|
exit 1
|
|
fi
|
|
|
|
# 2. Mostra menu para o usuário escolher
|
|
echo "Selecione uma partição para montar:"
|
|
for i in "${!DISCOS[@]}"; do
|
|
echo "$((i+1))) ${DISCOS[$i]}"
|
|
done
|
|
|
|
# 3. Recebe escolha
|
|
read -p "Digite o número da partição desejada: " escolha
|
|
|
|
# Valida escolha
|
|
if ! [[ "$escolha" =~ ^[0-9]+$ ]] || [ "$escolha" -lt 1 ] || [ "$escolha" -gt ${#DISCOS[@]} ]; then
|
|
echo "Opção inválida."
|
|
exit 1
|
|
fi
|
|
|
|
DEVICE=${DISCOS[$((escolha-1))]}
|
|
|
|
# 4. Obtém UUID
|
|
UUID=$(blkid -s UUID -o value "$DEVICE")
|
|
if [ -z "$UUID" ]; then
|
|
echo "UUID não encontrado para $DEVICE"
|
|
exit 1
|
|
fi
|
|
|
|
# 5. Detecta o tipo de sistema de arquivos
|
|
FSTYPE=$(blkid -s TYPE -o value "$DEVICE")
|
|
if [ -z "$FSTYPE" ]; then
|
|
echo "Tipo de sistema de arquivos não encontrado."
|
|
exit 1
|
|
fi
|
|
|
|
# 6. Solicita ponto de montagem
|
|
read -p "Informe o ponto de montagem (ex: /mnt/dados): " MOUNTPOINT
|
|
|
|
# Cria se não existir
|
|
if [ ! -d "$MOUNTPOINT" ]; then
|
|
echo "Criando diretório $MOUNTPOINT"
|
|
mkdir -p "$MOUNTPOINT"
|
|
fi
|
|
|
|
# 7. Linha que vai pro fstab
|
|
FSTAB_LINE="UUID=$UUID $MOUNTPOINT $FSTYPE defaults 0 2"
|
|
|
|
# Verifica se já existe
|
|
if grep -qs "$UUID" /etc/fstab; then
|
|
echo "UUID já está no fstab. Abortando."
|
|
exit 1
|
|
fi
|
|
|
|
# 8. Escreve no fstab
|
|
echo "Adicionando ao /etc/fstab:"
|
|
echo "$FSTAB_LINE"
|
|
echo "$FSTAB_LINE" | tee -a /etc/fstab
|
|
|
|
# 9. Monta
|
|
mount -a
|
|
|
|
# 10. Sucesso
|
|
echo "Montado $DEVICE em $MOUNTPOINT com UUID=$UUID"
|