mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2025-07-03 06:26:52 +00:00
test
This commit is contained in:
parent
e1b46bf496
commit
71e6d4093f
90
scripts/test/linux.sh
Normal file
90
scripts/test/linux.sh
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
#!/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 o Cloud-Init
|
||||||
|
ISO_TYPE=$(whiptail --title "Tipo de ISO Linux" \
|
||||||
|
--menu "¿Qué tipo de imagen deseas descargar?" 15 60 4 \
|
||||||
|
"tradicional" "ISO estándar (Desktop o Server)" \
|
||||||
|
"cloud" "ISO Cloud-Init (uso avanzado)" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
[ $? -ne 0 ] && echo "Cancelado." && exit 1
|
||||||
|
|
||||||
|
if [ "$ISO_TYPE" = "tradicional" ]; then
|
||||||
|
# Lista de distros estándar con múltiples versiones
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
else
|
||||||
|
# Lista de distros con Cloud-Init
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Crear menú con whiptail
|
||||||
|
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")
|
||||||
|
|
||||||
|
# Descargar ISO si no existe
|
||||||
|
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"
|
95
scripts/test/linux_2.sh
Normal file
95
scripts/test/linux_2.sh
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
#!/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"
|
82
scripts/test/linux_3.sh
Normal file
82
scripts/test/linux_3.sh
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
#!/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
|
||||||
|
|
||||||
|
# Menú combinado único con fuente de origen
|
||||||
|
DISTROS=(
|
||||||
|
"Ubuntu 22.04 LTS Desktop |Desktop |ProxMenux|https://releases.ubuntu.com/22.04/ubuntu-22.04.4-desktop-amd64.iso"
|
||||||
|
"Ubuntu 20.04 LTS Desktop |Desktop |ProxMenux|https://releases.ubuntu.com/20.04/ubuntu-20.04.6-desktop-amd64.iso"
|
||||||
|
"Ubuntu 22.04 LTS Server (CLI) |CLI |ProxMenux|https://releases.ubuntu.com/22.04/ubuntu-22.04.4-live-server-amd64.iso"
|
||||||
|
"Ubuntu 20.04 LTS Server (CLI) |CLI |ProxMenux|https://releases.ubuntu.com/20.04/ubuntu-20.04.6-live-server-amd64.iso"
|
||||||
|
"Debian 12 Gnome (Desktop) |Desktop |ProxMenux|https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-12.5.0-amd64-DVD-1.iso"
|
||||||
|
"Debian 11 Gnome (Desktop) |Desktop |ProxMenux|https://cdimage.debian.org/debian-cd/11.9.0/amd64/iso-dvd/debian-11.9.0-amd64-DVD-1.iso"
|
||||||
|
"Debian 12 Netinst (CLI) |CLI |ProxMenux|https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.5.0-amd64-netinst.iso"
|
||||||
|
"Debian 11 Netinst (CLI) |CLI |ProxMenux|https://cdimage.debian.org/debian-cd/11.9.0/amd64/iso-cd/debian-11.9.0-amd64-netinst.iso"
|
||||||
|
"Fedora Workstation 39 |Desktop |ProxMenux|https://download.fedoraproject.org/pub/fedora/linux/releases/39/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-39-1.5.iso"
|
||||||
|
"Fedora Workstation 38 |Desktop |ProxMenux|https://download.fedoraproject.org/pub/fedora/linux/releases/38/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-38-1.6.iso"
|
||||||
|
"Rocky Linux 9.3 Gnome |Desktop |ProxMenux|https://download.rockylinux.org/pub/rocky/9.3/isos/x86_64/Rocky-9.3-x86_64-boot.iso"
|
||||||
|
"Rocky Linux 8.9 Gnome |Desktop |ProxMenux|https://download.rockylinux.org/pub/rocky/8.9/isos/x86_64/Rocky-8.9-x86_64-boot.iso"
|
||||||
|
"Linux Mint 21.3 Cinnamon |Desktop |ProxMenux|https://mirrors.edge.kernel.org/linuxmint/stable/21.3/linuxmint-21.3-cinnamon-64bit.iso"
|
||||||
|
"Linux Mint 21.2 Cinnamon |Desktop |ProxMenux|https://mirrors.edge.kernel.org/linuxmint/stable/21.2/linuxmint-21.2-cinnamon-64bit.iso"
|
||||||
|
"openSUSE Leap 15.5 |Desktop |ProxMenux|https://download.opensuse.org/distribution/leap/15.5/iso/openSUSE-Leap-15.5-DVD-x86_64.iso"
|
||||||
|
"openSUSE Leap 15.4 |Desktop |ProxMenux|https://download.opensuse.org/distribution/leap/15.4/iso/openSUSE-Leap-15.4-DVD-x86_64.iso"
|
||||||
|
"Alpine Linux 3.19 |CLI |ProxMenux|https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/x86_64/alpine-standard-3.19.1-x86_64.iso"
|
||||||
|
"Kali Linux 2024.1 |Desktop |ProxMenux|https://cdimage.kali.org/kali-2024.1/kali-linux-2024.1-installer-amd64.iso"
|
||||||
|
"Arch Linux (automatizado) |Automatizado |Helper Scripts|https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/archlinux-vm.sh"
|
||||||
|
"Debian 12 (automatizado) |Automatizado |Helper Scripts|https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/debian-vm.sh"
|
||||||
|
"Ubuntu 22.04 (automatizado) |Automatizado |Helper Scripts|https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/ubuntu2204-vm.sh"
|
||||||
|
"Ubuntu 24.04 (automatizado) |Automatizado |Helper Scripts|https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/ubuntu2404-vm.sh"
|
||||||
|
"Ubuntu 24.10 (automatizado) |Automatizado |Helper Scripts|https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/ubuntu2410-vm.sh"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Construir menú con columnas alineadas
|
||||||
|
MENU_OPTIONS=("HEADER" "Versión │ Tipo │ Fuente")
|
||||||
|
INDEX=0
|
||||||
|
for entry in "${DISTROS[@]}"; do
|
||||||
|
NAME=$(echo "$entry" | cut -d"|" -f1)
|
||||||
|
TYPE=$(echo "$entry" | cut -d"|" -f2)
|
||||||
|
SOURCE=$(echo "$entry" | cut -d"|" -f3)
|
||||||
|
DISPLAY="${NAME} │ ${TYPE} │ ${SOURCE}"
|
||||||
|
MENU_OPTIONS+=("$INDEX" "$DISPLAY")
|
||||||
|
URLS[$INDEX]="$entry"
|
||||||
|
((INDEX++))
|
||||||
|
done
|
||||||
|
|
||||||
|
CHOICE=$(whiptail --title "Instalación Linux" \
|
||||||
|
--menu "Selecciona la distribución que deseas instalar o descargar:" 25 100 20 \
|
||||||
|
"${MENU_OPTIONS[@]}" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
[ $? -ne 0 ] && echo "Cancelado." && exit 1
|
||||||
|
|
||||||
|
SELECTED="${URLS[$CHOICE]}"
|
||||||
|
NAME=$(echo "$SELECTED" | cut -d"|" -f1)
|
||||||
|
TYPE=$(echo "$SELECTED" | cut -d"|" -f2)
|
||||||
|
SOURCE=$(echo "$SELECTED" | cut -d"|" -f3)
|
||||||
|
URL=$(echo "$SELECTED" | cut -d"|" -f4)
|
||||||
|
|
||||||
|
if [[ "$TYPE" == "Automatizado" ]]; then
|
||||||
|
echo "Ejecutando script remoto para: $NAME"
|
||||||
|
bash -c "$(curl -fsSL $URL)"
|
||||||
|
else
|
||||||
|
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"
|
||||||
|
fi
|
85
scripts/test/linux_4.sh
Normal file
85
scripts/test/linux_4.sh
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
#!/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
|
||||||
|
|
||||||
|
# Menú combinado único con fuente de origen
|
||||||
|
DISTROS=(
|
||||||
|
"Ubuntu 22.04 LTS Desktop|Desktop|ProxMenux|https://releases.ubuntu.com/22.04/ubuntu-22.04.4-desktop-amd64.iso"
|
||||||
|
"Ubuntu 20.04 LTS Desktop|Desktop|ProxMenux|https://releases.ubuntu.com/20.04/ubuntu-20.04.6-desktop-amd64.iso"
|
||||||
|
"Ubuntu 22.04 LTS Server (CLI)|CLI|ProxMenux|https://releases.ubuntu.com/22.04/ubuntu-22.04.4-live-server-amd64.iso"
|
||||||
|
"Ubuntu 20.04 LTS Server (CLI)|CLI|ProxMenux|https://releases.ubuntu.com/20.04/ubuntu-20.04.6-live-server-amd64.iso"
|
||||||
|
"Debian 12 Gnome (Desktop)|Desktop|ProxMenux|https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-12.5.0-amd64-DVD-1.iso"
|
||||||
|
"Debian 11 Gnome (Desktop)|Desktop|ProxMenux|https://cdimage.debian.org/debian-cd/11.9.0/amd64/iso-dvd/debian-11.9.0-amd64-DVD-1.iso"
|
||||||
|
"Debian 12 Netinst (CLI)|CLI|ProxMenux|https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.5.0-amd64-netinst.iso"
|
||||||
|
"Debian 11 Netinst (CLI)|CLI|ProxMenux|https://cdimage.debian.org/debian-cd/11.9.0/amd64/iso-cd/debian-11.9.0-amd64-netinst.iso"
|
||||||
|
"Fedora Workstation 39|Desktop|ProxMenux|https://download.fedoraproject.org/pub/fedora/linux/releases/39/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-39-1.5.iso"
|
||||||
|
"Fedora Workstation 38|Desktop|ProxMenux|https://download.fedoraproject.org/pub/fedora/linux/releases/38/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-38-1.6.iso"
|
||||||
|
"Rocky Linux 9.3 Gnome|Desktop|ProxMenux|https://download.rockylinux.org/pub/rocky/9.3/isos/x86_64/Rocky-9.3-x86_64-boot.iso"
|
||||||
|
"Rocky Linux 8.9 Gnome|Desktop|ProxMenux|https://download.rockylinux.org/pub/rocky/8.9/isos/x86_64/Rocky-8.9-x86_64-boot.iso"
|
||||||
|
"Linux Mint 21.3 Cinnamon|Desktop|ProxMenux|https://mirrors.edge.kernel.org/linuxmint/stable/21.3/linuxmint-21.3-cinnamon-64bit.iso"
|
||||||
|
"Linux Mint 21.2 Cinnamon|Desktop|ProxMenux|https://mirrors.edge.kernel.org/linuxmint/stable/21.2/linuxmint-21.2-cinnamon-64bit.iso"
|
||||||
|
"openSUSE Leap 15.5|Desktop|ProxMenux|https://download.opensuse.org/distribution/leap/15.5/iso/openSUSE-Leap-15.5-DVD-x86_64.iso"
|
||||||
|
"openSUSE Leap 15.4|Desktop|ProxMenux|https://download.opensuse.org/distribution/leap/15.4/iso/openSUSE-Leap-15.4-DVD-x86_64.iso"
|
||||||
|
"Alpine Linux 3.19|CLI|ProxMenux|https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/x86_64/alpine-standard-3.19.1-x86_64.iso"
|
||||||
|
"Kali Linux 2024.1|Desktop|ProxMenux|https://cdimage.kali.org/kali-2024.1/kali-linux-2024.1-installer-amd64.iso"
|
||||||
|
"Manjaro 23.1 GNOME|Desktop|ProxMenux|https://download.manjaro.org/gnome/23.1/manjaro-gnome-23.1-231017-linux65.iso"
|
||||||
|
"Arch Linux (automatizado)|Cloud-ini|Helper Scripts|https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/archlinux-vm.sh"
|
||||||
|
"Debian 12 (automatizado)|Cloud-ini|Helper Scripts|https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/debian-vm.sh"
|
||||||
|
"Ubuntu 22.04 (automatizado)|Cloud-ini|Helper Scripts|https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/ubuntu2204-vm.sh"
|
||||||
|
"Ubuntu 24.04 (automatizado)|Cloud-ini|Helper Scripts|https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/ubuntu2404-vm.sh"
|
||||||
|
"Ubuntu 24.10 (automatizado)|Cloud-ini|Helper Scripts|https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/ubuntu2410-vm.sh"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Construir menú con alineación perfecta usando printf
|
||||||
|
MENU_OPTIONS=()
|
||||||
|
INDEX=0
|
||||||
|
for entry in "${DISTROS[@]}"; do
|
||||||
|
IFS='|' read -r NAME TYPE SOURCE URL <<< "$entry"
|
||||||
|
LINE=$(printf "%-35s │ %-12s │ %s" "$NAME" "$TYPE" "$SOURCE")
|
||||||
|
MENU_OPTIONS+=("$INDEX" "$LINE")
|
||||||
|
URLS[$INDEX]="$entry"
|
||||||
|
((INDEX++))
|
||||||
|
done
|
||||||
|
|
||||||
|
HEADER="%-41s │ %-12s │ %s"
|
||||||
|
HEADER_TEXT=$(printf "$HEADER" " Versión" "Tipo" "Fuente")
|
||||||
|
|
||||||
|
CHOICE=$(whiptail --title "Instalación Linux" \
|
||||||
|
--menu "Selecciona la distribución que deseas instalar o descargar:
|
||||||
|
|
||||||
|
$HEADER_TEXT" 20 80 10 \
|
||||||
|
"${MENU_OPTIONS[@]}" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
[ $? -ne 0 ] && echo "Cancelado." && exit 1
|
||||||
|
|
||||||
|
SELECTED="${URLS[$CHOICE]}"
|
||||||
|
IFS='|' read -r NAME TYPE SOURCE URL <<< "$SELECTED"
|
||||||
|
|
||||||
|
if [[ "$TYPE" == "Automatizado" ]]; then
|
||||||
|
echo "Ejecutando script remoto para: $NAME"
|
||||||
|
bash -c "$(curl -fsSL $URL)"
|
||||||
|
else
|
||||||
|
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"
|
||||||
|
wget -q --show-progress -O "$ISO_DIR/$FILENAME" "$URL"
|
||||||
|
|
||||||
|
fi
|
||||||
|
echo "✅ Imagen lista: $ISO_DIR/$FILENAME"
|
||||||
|
fi
|
83
scripts/test/uupdump.sh
Normal file
83
scripts/test/uupdump.sh
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Ruta donde se guardarán las ISOs
|
||||||
|
ISO_DIR="/var/lib/vz/template/iso"
|
||||||
|
WORK_DIR="/root/uupdump"
|
||||||
|
mkdir -p "$WORK_DIR"
|
||||||
|
cd "$WORK_DIR" || exit 1
|
||||||
|
|
||||||
|
# Comprobar dependencias necesarias
|
||||||
|
REQUIRED_PACKAGES=(aria2 cabextract wimtools chntpw genisoimage unzip curl jq 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
|
||||||
|
|
||||||
|
# Versiones predefinidas
|
||||||
|
VERSIONS=(
|
||||||
|
"Win11_Pro_23H2|22631.1.230530-1536|x64|es-es"
|
||||||
|
"Win10_LTSC_2021|19044.1288|x64|es-es"
|
||||||
|
"Win_Server_2022|20348.1|x64|es-es"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Crear menú con whiptail
|
||||||
|
MENU_OPTIONS=()
|
||||||
|
for i in "${!VERSIONS[@]}"; do
|
||||||
|
NAME=$(echo "${VERSIONS[$i]}" | cut -d"|" -f1)
|
||||||
|
MENU_OPTIONS+=("$i" "$NAME")
|
||||||
|
done
|
||||||
|
|
||||||
|
CHOICE=$(whiptail --title "Descarga de ISO Windows" \
|
||||||
|
--menu "Elige una versión de Windows para generar la ISO:" 20 60 10 \
|
||||||
|
"${MENU_OPTIONS[@]}" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
[ $? -ne 0 ] && echo "Cancelado." && exit 1
|
||||||
|
|
||||||
|
# Obtener datos seleccionados
|
||||||
|
SELECTED="${VERSIONS[$CHOICE]}"
|
||||||
|
NAME=$(echo "$SELECTED" | cut -d"|" -f1)
|
||||||
|
BUILD=$(echo "$SELECTED" | cut -d"|" -f2)
|
||||||
|
ARCH=$(echo "$SELECTED" | cut -d"|" -f3)
|
||||||
|
LANG=$(echo "$SELECTED" | cut -d"|" -f4)
|
||||||
|
|
||||||
|
# Consultar API para obtener ID de descarga
|
||||||
|
API_URL="https://api.uupdump.net/listid.php?search=$NAME&arch=$ARCH&ring=retail"
|
||||||
|
|
||||||
|
ID=$(curl -s "$API_URL" | jq -r ".response[] | select(.build == \"$BUILD\") | .uuid" | head -n1)
|
||||||
|
|
||||||
|
if [ -z "$ID" ]; then
|
||||||
|
echo "No se encontró la versión en la API."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Descargar el ZIP de UUP dump
|
||||||
|
ZIP_URL="https://api.uupdump.net/getpkg.php?id=$ID&autodl=2"
|
||||||
|
ZIP_NAME="uupdump_$ID.zip"
|
||||||
|
curl -L "$ZIP_URL" -o "$ZIP_NAME"
|
||||||
|
unzip -o "$ZIP_NAME" -d "$WORK_DIR/$ID"
|
||||||
|
cd "$WORK_DIR/$ID" || exit 1
|
||||||
|
chmod +x uup_download_linux.sh
|
||||||
|
|
||||||
|
# Ejecutar generador de ISO
|
||||||
|
./uup_download_linux.sh
|
||||||
|
|
||||||
|
# Mover ISO generada
|
||||||
|
ISO_FILE=$(find . -type f -name "*.iso" | head -n1)
|
||||||
|
if [ -f "$ISO_FILE" ]; then
|
||||||
|
mv "$ISO_FILE" "$ISO_DIR/"
|
||||||
|
echo "✅ ISO generada y movida a: $ISO_DIR/$(basename "$ISO_FILE")"
|
||||||
|
|
||||||
|
# Limpieza de archivos temporales
|
||||||
|
echo "🧹 Limpiando archivos temporales..."
|
||||||
|
rm -rf "$WORK_DIR/$ID"
|
||||||
|
rm -f "$WORK_DIR/$ZIP_NAME"
|
||||||
|
echo "✅ Limpieza completada."
|
||||||
|
else
|
||||||
|
echo "❌ No se encontró la ISO generada."
|
||||||
|
exit 1
|
||||||
|
fi
|
113
scripts/test/uupdump_2.sh
Normal file
113
scripts/test/uupdump_2.sh
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Ruta donde se guardarán las ISOs
|
||||||
|
ISO_DIR="/var/lib/vz/template/iso"
|
||||||
|
WORK_DIR="/root/uupdump"
|
||||||
|
mkdir -p "$WORK_DIR"
|
||||||
|
cd "$WORK_DIR" || exit 1
|
||||||
|
|
||||||
|
# Comprobar dependencias necesarias
|
||||||
|
REQUIRED_PACKAGES=(aria2 cabextract wimtools chntpw genisoimage unzip curl jq 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
|
||||||
|
|
||||||
|
# Menú principal para elegir familia de Windows
|
||||||
|
FAMILY=$(whiptail --title "Tipo de Windows" \
|
||||||
|
--menu "Selecciona qué tipo de Windows deseas descargar:" 15 60 4 \
|
||||||
|
"w11" "Windows 11" \
|
||||||
|
"w10" "Windows 10" \
|
||||||
|
"srv" "Windows Server" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
[ $? -ne 0 ] && echo "Cancelado." && exit 1
|
||||||
|
|
||||||
|
# Parámetros de búsqueda según la familia seleccionada
|
||||||
|
case $FAMILY in
|
||||||
|
w11)
|
||||||
|
SEARCH_TERM="windows 11"
|
||||||
|
TITLE_MENU="Windows 11"
|
||||||
|
;;
|
||||||
|
w10)
|
||||||
|
SEARCH_TERM="windows 10"
|
||||||
|
TITLE_MENU="Windows 10"
|
||||||
|
;;
|
||||||
|
srv)
|
||||||
|
SEARCH_TERM="windows server"
|
||||||
|
TITLE_MENU="Windows Server"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Selección inválida"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Obtener lista dinámica de builds desde UUP dump API
|
||||||
|
API_URL="https://api.uupdump.net/listid.php?search=$(echo $SEARCH_TERM | sed 's/ /+/g')&arch=x64&ring=retail"
|
||||||
|
VERSIONS=$(curl -s "$API_URL" | jq -r '.response[] | [.title, .build, .arch] | @tsv' | head -n 10)
|
||||||
|
|
||||||
|
# Construir menú dinámico
|
||||||
|
MENU_OPTIONS=()
|
||||||
|
INDEX=0
|
||||||
|
while IFS=$'\t' read -r TITLE BUILD ARCH; do
|
||||||
|
DISPLAY_NAME="$TITLE ($BUILD)"
|
||||||
|
MENU_OPTIONS+=("$INDEX" "$DISPLAY_NAME")
|
||||||
|
VERSION_DATA[$INDEX]="$TITLE|$BUILD|$ARCH|es-es"
|
||||||
|
((INDEX++))
|
||||||
|
done <<< "$VERSIONS"
|
||||||
|
|
||||||
|
CHOICE=$(whiptail --title "Descarga de ISO $TITLE_MENU" \
|
||||||
|
--menu "Elige una versión para generar la ISO:" 20 78 10 \
|
||||||
|
"${MENU_OPTIONS[@]}" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
[ $? -ne 0 ] && echo "Cancelado." && exit 1
|
||||||
|
|
||||||
|
# Obtener datos seleccionados
|
||||||
|
SELECTED="${VERSION_DATA[$CHOICE]}"
|
||||||
|
NAME=$(echo "$SELECTED" | cut -d"|" -f1)
|
||||||
|
BUILD=$(echo "$SELECTED" | cut -d"|" -f2)
|
||||||
|
ARCH=$(echo "$SELECTED" | cut -d"|" -f3)
|
||||||
|
LANG=$(echo "$SELECTED" | cut -d"|" -f4)
|
||||||
|
|
||||||
|
# Consultar API para obtener ID de descarga
|
||||||
|
API_URL="https://api.uupdump.net/listid.php?search=$(echo $NAME | sed 's/ /+/g')&arch=$ARCH&ring=retail"
|
||||||
|
|
||||||
|
ID=$(curl -s "$API_URL" | jq -r ".response[] | select(.build == \"$BUILD\") | .uuid" | head -n1)
|
||||||
|
|
||||||
|
if [ -z "$ID" ]; then
|
||||||
|
echo "No se encontró la versión en la API."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Descargar el ZIP de UUP dump
|
||||||
|
ZIP_URL="https://api.uupdump.net/getpkg.php?id=$ID&autodl=2"
|
||||||
|
ZIP_NAME="uupdump_$ID.zip"
|
||||||
|
curl -L "$ZIP_URL" -o "$ZIP_NAME"
|
||||||
|
unzip -o "$ZIP_NAME" -d "$WORK_DIR/$ID"
|
||||||
|
cd "$WORK_DIR/$ID" || exit 1
|
||||||
|
chmod +x uup_download_linux.sh
|
||||||
|
|
||||||
|
# Ejecutar generador de ISO
|
||||||
|
./uup_download_linux.sh
|
||||||
|
|
||||||
|
# Mover ISO generada
|
||||||
|
ISO_FILE=$(find . -type f -name "*.iso" | head -n1)
|
||||||
|
if [ -f "$ISO_FILE" ]; then
|
||||||
|
mv "$ISO_FILE" "$ISO_DIR/"
|
||||||
|
echo "✅ ISO generada y movida a: $ISO_DIR/$(basename "$ISO_FILE")"
|
||||||
|
|
||||||
|
# Limpieza de archivos temporales
|
||||||
|
echo "🧹 Limpiando archivos temporales..."
|
||||||
|
rm -rf "$WORK_DIR/$ID"
|
||||||
|
rm -f "$WORK_DIR/$ZIP_NAME"
|
||||||
|
echo "✅ Limpieza completada."
|
||||||
|
else
|
||||||
|
echo "❌ No se encontró la ISO generada."
|
||||||
|
exit 1
|
||||||
|
fi
|
Loading…
x
Reference in New Issue
Block a user