ProxMenux/scripts/test/linux_2.sh
2025-04-22 15:06:24 +02:00

96 lines
5.4 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
ISO_DIR="/var/lib/vz/template/iso"
mkdir -p "$ISO_DIR"
# Comprobar dependencias necesarias
REQUIRED_PACKAGES=(curl wget whiptail)
MISSING=""
for pkg in "${REQUIRED_PACKAGES[@]}"; do
dpkg -s $pkg &>/dev/null || MISSING+="$pkg "
done
if [ -n "$MISSING" ]; then
echo "Instalando dependencias necesarias: $MISSING"
apt update && apt install -y $MISSING
fi
# Preguntar si se desea ISO tradicional, Cloud-Init o ejecución externa
ISO_TYPE=$(whiptail --title "Tipo de instalación Linux" \
--menu "¿Qué tipo de sistema deseas instalar?" 15 70 5 \
"tradicional" "ISO estándar (Desktop o Server)" \
"cloud" "Cloud-Init (requiere configuración extra)" \
"externo" "Instalación automatizada desde repositorio externo" \
3>&1 1>&2 2>&3)
[ $? -ne 0 ] && echo "Cancelado." && exit 1
if [ "$ISO_TYPE" = "tradicional" ]; then
DISTROS=(
"ubuntu_gui|Ubuntu 22.04 LTS Desktop|https://releases.ubuntu.com/22.04/ubuntu-22.04.4-desktop-amd64.iso"
"ubuntu_gui|Ubuntu 20.04 LTS Desktop|https://releases.ubuntu.com/20.04/ubuntu-20.04.6-desktop-amd64.iso"
"ubuntu_cli|Ubuntu 22.04 LTS Server (CLI)|https://releases.ubuntu.com/22.04/ubuntu-22.04.4-live-server-amd64.iso"
"ubuntu_cli|Ubuntu 20.04 LTS Server (CLI)|https://releases.ubuntu.com/20.04/ubuntu-20.04.6-live-server-amd64.iso"
"debian_gui|Debian 12 Gnome (Desktop)|https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-12.5.0-amd64-DVD-1.iso"
"debian_gui|Debian 11 Gnome (Desktop)|https://cdimage.debian.org/debian-cd/11.9.0/amd64/iso-dvd/debian-11.9.0-amd64-DVD-1.iso"
"debian_cli|Debian 12 Netinst (CLI)|https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.5.0-amd64-netinst.iso"
"debian_cli|Debian 11 Netinst (CLI)|https://cdimage.debian.org/debian-cd/11.9.0/amd64/iso-cd/debian-11.9.0-amd64-netinst.iso"
"fedora_gui|Fedora Workstation 39 (Desktop)|https://download.fedoraproject.org/pub/fedora/linux/releases/39/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-39-1.5.iso"
"fedora_gui|Fedora Workstation 38 (Desktop)|https://download.fedoraproject.org/pub/fedora/linux/releases/38/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-38-1.6.iso"
"rocky_gui|Rocky Linux 9.3 Gnome (Desktop)|https://download.rockylinux.org/pub/rocky/9.3/isos/x86_64/Rocky-9.3-x86_64-boot.iso"
"rocky_gui|Rocky Linux 8.9 Gnome (Desktop)|https://download.rockylinux.org/pub/rocky/8.9/isos/x86_64/Rocky-8.9-x86_64-boot.iso"
"mint_gui|Linux Mint 21.3 Cinnamon (Desktop)|https://mirrors.edge.kernel.org/linuxmint/stable/21.3/linuxmint-21.3-cinnamon-64bit.iso"
"mint_gui|Linux Mint 21.2 Cinnamon (Desktop)|https://mirrors.edge.kernel.org/linuxmint/stable/21.2/linuxmint-21.2-cinnamon-64bit.iso"
"opensuse_gui|openSUSE Leap 15.5 (Desktop)|https://download.opensuse.org/distribution/leap/15.5/iso/openSUSE-Leap-15.5-DVD-x86_64.iso"
"opensuse_gui|openSUSE Leap 15.4 (Desktop)|https://download.opensuse.org/distribution/leap/15.4/iso/openSUSE-Leap-15.4-DVD-x86_64.iso"
)
elif [ "$ISO_TYPE" = "cloud" ]; then
DISTROS=(
"ubuntu_cloud|Ubuntu 22.04 Cloud-Init|https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-amd64.img"
"ubuntu_cloud|Ubuntu 20.04 Cloud-Init|https://cloud-images.ubuntu.com/releases/20.04/release/ubuntu-20.04-server-cloudimg-amd64.img"
"debian_cloud|Debian 12 Cloud-Init|https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2"
"debian_cloud|Debian 11 Cloud-Init|https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-amd64.qcow2"
"rocky_cloud|Rocky Linux 9 Cloud-Init|https://download.rockylinux.org/pub/rocky/9/cloud/x86_64/images/Rocky-9-GenericCloud.latest.x86_64.qcow2"
"rocky_cloud|Rocky Linux 8 Cloud-Init|https://download.rockylinux.org/pub/rocky/8/cloud/x86_64/images/Rocky-8-GenericCloud.latest.x86_64.qcow2"
"almalinux_cloud|AlmaLinux 9 Cloud-Init|https://repo.almalinux.org/almalinux/9/cloud/x86_64/images/AlmaLinux-9-GenericCloud-latest.x86_64.qcow2"
"almalinux_cloud|AlmaLinux 8 Cloud-Init|https://repo.almalinux.org/almalinux/8/cloud/x86_64/images/AlmaLinux-8-GenericCloud-latest.x86_64.qcow2"
)
else
# Instalaciones desde scripts externos
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/archlinux-vm.sh)"
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/debian-vm.sh)"
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/ubuntu2204-vm.sh)"
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/ubuntu2404-vm.sh)"
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/ubuntu2410-vm.sh)"
exit 0
fi
MENU_OPTIONS=()
INDEX=0
for entry in "${DISTROS[@]}"; do
NAME=$(echo "$entry" | cut -d"|" -f2)
MENU_OPTIONS+=("$INDEX" "$NAME")
URLS[$INDEX]="$entry"
((INDEX++))
done
CHOICE=$(whiptail --title "Descarga de ISO Linux" \
--menu "Selecciona una versión para descargar:" 25 78 15 \
"${MENU_OPTIONS[@]}" \
3>&1 1>&2 2>&3)
[ $? -ne 0 ] && echo "Cancelado." && exit 1
SELECTED="${URLS[$CHOICE]}"
NAME=$(echo "$SELECTED" | cut -d"|" -f2)
URL=$(echo "$SELECTED" | cut -d"|" -f3)
FILENAME=$(basename "$URL")
if [ -f "$ISO_DIR/$FILENAME" ]; then
echo " La imagen ya existe: $ISO_DIR/$FILENAME"
else
echo "⬇️ Descargando $NAME..."
wget -O "$ISO_DIR/$FILENAME" "$URL"
fi
echo "✅ Imagen lista: $ISO_DIR/$FILENAME"