mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2025-06-28 04:06:54 +00:00
Update disk-passthrough.sh
This commit is contained in:
parent
6c28c6116a
commit
f71c01dd36
@ -1,55 +1,67 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Colores para mensajes
|
# 1. Mostrar lista de VMs disponibles
|
||||||
RED='\033[0;31m'
|
VM_LIST=$(qm list | awk 'NR>1 {print $1, $2}')
|
||||||
GREEN='\033[0;32m'
|
if [ -z "$VM_LIST" ]; then
|
||||||
NC='\033[0m'
|
whiptail --title "Error" --msgbox "No hay VMs disponibles en el sistema." 8 40
|
||||||
|
|
||||||
# 1. Seleccionar VM
|
|
||||||
VMID=$(whiptail --title "Seleccionar VM" --menu "Selecciona la VM a la que deseas añadir discos:" 15 60 8 $(qm list | awk 'NR>1 {print $1, $2}') 3>&1 1>&2 2>&3)
|
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo -e "${RED}Operación cancelada.${NC}"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 2. Detectar disco del sistema y listar discos físicos disponibles
|
# Seleccionar VM
|
||||||
|
VMID=$(whiptail --title "Seleccionar VM" --menu "Selecciona la VM a la que deseas añadir discos:" 15 60 8 $VM_LIST 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
if [ -z "$VMID" ]; then
|
||||||
|
whiptail --title "Error" --msgbox "No se seleccionó ninguna VM." 8 40
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. Detectar discos físicos disponibles excluyendo los asignados
|
||||||
DISCO_SISTEMA=$(findmnt -n -o SOURCE / | sed 's/[0-9]*$//')
|
DISCO_SISTEMA=$(findmnt -n -o SOURCE / | sed 's/[0-9]*$//')
|
||||||
DISCOS=$(lsblk -d -n -e 7,11 | awk '{print $1}' | grep -v "${DISCO_SISTEMA##*/}" | sed 's/^/\/dev\//')
|
DISCOS_LIBRES=$(lsblk -d -n -e 7,11 | awk '{print $1}' | grep -v "${DISCO_SISTEMA##*/}" | sed 's/^/\/dev\//' | while read DISCO; do
|
||||||
SELECCIONADOS=$(whiptail --title "Seleccionar Discos" --checklist "Selecciona los discos que deseas añadir:" 20 60 10 $(for disco in $DISCOS; do echo "$disco" OFF; done) 3>&1 1>&2 2>&3)
|
if ! qm config | grep -q "$DISCO"; then
|
||||||
|
INFO=$(lsblk -o NAME,MODEL,SIZE | grep "${DISCO##*/}")
|
||||||
|
echo "$DISCO \"$INFO\" OFF"
|
||||||
|
fi
|
||||||
|
done)
|
||||||
|
|
||||||
|
if [ -z "$DISCOS_LIBRES" ]; then
|
||||||
|
whiptail --title "Error" --msgbox "No hay discos físicos disponibles para añadir." 8 40
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Seleccionar discos
|
||||||
|
SELECCIONADOS=$(whiptail --title "Seleccionar Discos" --checklist "Selecciona los discos que deseas añadir:" 20 60 10 $DISCOS_LIBRES 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
if [ -z "$SELECCIONADOS" ]; then
|
if [ -z "$SELECCIONADOS" ]; then
|
||||||
echo -e "${RED}No se seleccionaron discos.${NC}"
|
whiptail --title "Error" --msgbox "No se seleccionaron discos." 8 40
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 3. Seleccionar tipo de interfaz
|
# 3. Seleccionar tipo de interfaz
|
||||||
INTERFAZ=$(whiptail --title "Tipo de Interfaz" --menu "Selecciona el tipo de interfaz:" 15 40 4 \
|
INTERFAZ=$(whiptail --title "Tipo de Interfaz" --menu "Selecciona el tipo de interfaz para los discos seleccionados:" 15 40 4 \
|
||||||
"sata" "Añadir como SATA" \
|
"sata" "Añadir como SATA" \
|
||||||
"scsi" "Añadir como SCSI" \
|
"scsi" "Añadir como SCSI" \
|
||||||
"virtio" "Añadir como VirtIO" \
|
"virtio" "Añadir como VirtIO" \
|
||||||
"ide" "Añadir como IDE" 3>&1 1>&2 2>&3)
|
"ide" "Añadir como IDE" 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
if [ -z "$INTERFAZ" ]; then
|
if [ -z "$INTERFAZ" ]; then
|
||||||
echo -e "${RED}No se seleccionó una interfaz.${NC}"
|
whiptail --title "Error" --msgbox "No se seleccionó un tipo de interfaz." 8 40
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 4. Confirmación
|
# 4. Añadir discos con índices automáticos
|
||||||
whiptail --title "Confirmación" --yesno "VMID: $VMID\nDiscos seleccionados: $SELECCIONADOS\nInterfaz: $INTERFAZ\n\n¿Deseas proceder?" 15 50
|
echo "Añadiendo discos..."
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo -e "${RED}Operación cancelada.${NC}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 5. Añadir los discos
|
|
||||||
echo -e "${GREEN}Añadiendo discos...${NC}"
|
|
||||||
DISK_INDEX=0
|
|
||||||
for DISCO in $SELECCIONADOS; do
|
for DISCO in $SELECCIONADOS; do
|
||||||
qm set "$VMID" -$INTERFAZ$DISK_INDEX "$DISCO"
|
DISCO=$(echo "$DISCO" | tr -d '"') # Eliminar comillas
|
||||||
((DISK_INDEX++))
|
INDEX=0
|
||||||
|
|
||||||
|
# Buscar índice disponible
|
||||||
|
while qm config "$VMID" | grep -q "${INTERFAZ}${INDEX}"; do
|
||||||
|
((INDEX++))
|
||||||
|
done
|
||||||
|
|
||||||
|
qm set "$VMID" -${INTERFAZ}${INDEX} "$DISCO"
|
||||||
done
|
done
|
||||||
|
|
||||||
echo -e "${GREEN}Los discos se añadieron correctamente.${NC}"
|
whiptail --title "Operación Completada" --msgbox "Los discos se añadieron correctamente a la VM $VMID." 8 40
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user