diff --git a/scripts/help_info_menu.sh b/scripts/help_info_menu.sh new file mode 100644 index 0000000..9c72188 --- /dev/null +++ b/scripts/help_info_menu.sh @@ -0,0 +1,458 @@ +#!/bin/bash + +# ========================================================== +# ProxMenu - A menu-driven script for Proxmox VE management +# ========================================================== +# Author : MacRimi +# Copyright : (c) 2024 MacRimi +# License : MIT (https://raw.githubusercontent.com/MacRimi/ProxMenux/main/LICENSE) +# Version : 1.0 +# Last Updated: 28/01/2025 +# ========================================================== +# Description: +# This script provides an interactive command reference menu +# for Proxmox VE via dialog-based UI. +# - Categorized and translated lists of common and advanced commands. +# - Covers system, network, storage, VM/CT, updates, GPU passthrough, +# ZFS, backup/restore, and essential CLI tools. +# - Allows users to view or execute commands directly from the menu. +# ========================================================== + +# Configuration ============================================ +REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main" +BASE_DIR="/usr/local/share/proxmenux" +UTILS_FILE="$BASE_DIR/utils.sh" +VENV_PATH="/opt/googletrans-env" + +if [[ -f "$UTILS_FILE" ]]; then + source "$UTILS_FILE" +fi + +load_language +initialize_cache +# =============================================================== + +# Colores +YELLOW="\033[0;33m" +GREEN="\033[0;32m" +NC="\033[0m" + +if ! command -v dialog &>/dev/null; then + apt update -qq >/dev/null 2>&1 + apt install -y dialog >/dev/null 2>&1 +fi + + +# =============================================================== +# 01 Useful System Commands +# =============================================================== +show_system_commands() { + clear + echo -e "${YELLOW}$(translate 'Useful System Commands')${NC}" + echo "----------------------------------------" + echo -e " 1) ${GREEN}pveversion${NC} - $(translate 'Show Proxmox version')" + echo -e " 2) ${GREEN}pveversion -v${NC} - $(translate 'Detailed Proxmox version info')" + echo -e " 3) ${GREEN}systemctl status pveproxy${NC} - $(translate 'Check Proxmox Web UI status')" + echo -e " 4) ${GREEN}systemctl restart pveproxy${NC} - $(translate 'Restart Web UI proxy')" + echo -e " 5) ${GREEN}journalctl -xe${NC} - $(translate 'System errors and logs')" + echo -e " 6) ${GREEN}uptime${NC} - $(translate 'System uptime')" + echo -e " 7) ${GREEN}htop${NC} - $(translate 'Real-time system monitor')" + echo -e " 0) $(translate 'Back to previous menu')" + echo + echo -en "${TAB}${BOLD}${YW}${HOLD}$(translate 'Enter number or paste a command: ') ${CL}" + read -r user_input + + case "$user_input" in + 1) cmd="pveversion" ;; + 2) cmd="pveversion -v" ;; + 3) cmd="systemctl status pveproxy" ;; + 4) cmd="systemctl restart pveproxy" ;; + 5) cmd="journalctl -xe" ;; + 6) cmd="uptime" ;; + 7) cmd="htop" ;; + 0) return ;; + *) cmd="$user_input" ;; + esac + + echo -e " +${GREEN}> $cmd${NC} +" + bash -c "$cmd" + echo + msg_success "$(translate 'Press ENTER to return to the menu...')" + read -r tmp +} + +# =============================================================== +# 02 VM and CT Management Commands +# =============================================================== +show_vm_ct_commands() { + clear + echo -e "${YELLOW}$(translate 'VM and CT Management Commands')${NC}" + echo "---------------------------------------------------" + echo -e " 1) ${GREEN}qm list${NC} - $(translate 'List all virtual machines')" + echo -e " 2) ${GREEN}pct list${NC} - $(translate 'List all LXC containers')" + echo -e " 3) ${GREEN}qm start ${NC} - $(translate 'Start a virtual machine')" + echo -e " 4) ${GREEN}pct start ${NC} - $(translate 'Start a container')" + echo -e " 5) ${GREEN}qm stop ${NC} - $(translate 'Force stop a virtual machine')" + echo -e " 6) ${GREEN}pct stop ${NC} - $(translate 'Force stop a container')" + echo -e " 7) ${GREEN}qm config ${NC} - $(translate 'Show VM configuration')" + echo -e " 8) ${GREEN}pct config ${NC} - $(translate 'Show container configuration')" + echo -e " 9) ${GREEN}qm destroy ${NC} - $(translate 'Delete a VM (irreversible)')" + echo -e " 10) ${GREEN}pct destroy ${NC} - $(translate 'Delete a CT (irreversible)')" + echo -e " 0) $(translate 'Back to previous menu')" + echo + echo -en "${TAB}${BOLD}${YW}${HOLD}$(translate 'Enter number or paste a command: ') ${CL}" + read -r user_input + + case "$user_input" in + 1) cmd="qm list" ;; + 2) cmd="pct list" ;; + 3) cmd="qm start " ;; + 4) cmd="pct start " ;; + 5) cmd="qm stop " ;; + 6) cmd="pct stop " ;; + 7) cmd="qm config " ;; + 8) cmd="pct config " ;; + 9) cmd="qm destroy " ;; + 10) cmd="pct destroy " ;; + 0) return ;; + *) cmd="$user_input" ;; + esac + + echo -e " +${GREEN}> $cmd${NC} +" + bash -c "$cmd" + echo + msg_success "$(translate 'Press ENTER to return to the menu...')" + read -r tmp +} + + +# =============================================================== +# 03 Storage and Disks Commands +# =============================================================== +show_storage_commands() { + clear + echo -e "${YELLOW}$(translate 'Storage and Disks Commands')${NC}" + echo "--------------------------------------------------" + echo -e " 1) ${GREEN}lsblk${NC} - $(translate 'List block devices and partitions')" + echo -e " 2) ${GREEN}fdisk -l${NC} - $(translate 'List disks with detailed info')" + echo -e " 3) ${GREEN}df -h${NC} - $(translate 'Show disk usage by mount point')" + echo -e " 4) ${GREEN}pvdisplay${NC} - $(translate 'Display physical volumes (LVM)')" + echo -e " 5) ${GREEN}vgdisplay${NC} - $(translate 'Display volume groups (LVM)')" + echo -e " 6) ${GREEN}lvdisplay${NC} - $(translate 'Display logical volumes (LVM)')" + echo -e " 7) ${GREEN}cat /etc/pve/storage.cfg${NC} - $(translate 'Show Proxmox storage configuration')" + echo -e " 0) $(translate 'Back to previous menu')" + echo + echo -en "${TAB}${BOLD}${YW}${HOLD}$(translate 'Enter number or paste a command: ') ${CL}" + read -r user_input + + case "$user_input" in + 1) cmd="lsblk" ;; + 2) cmd="fdisk -l" ;; + 3) cmd="df -h" ;; + 4) cmd="pvdisplay" ;; + 5) cmd="vgdisplay" ;; + 6) cmd="lvdisplay" ;; + 7) cmd="cat /etc/pve/storage.cfg" ;; + 0) return ;; + *) cmd="$user_input" ;; + esac + + echo -e " +${GREEN}> $cmd${NC} +" + bash -c "$cmd" + echo + msg_success "$(translate 'Press ENTER to return to the menu...')" + read -r tmp +} + + +# =============================================================== +# 04 Network Commands +# =============================================================== +show_network_commands() { + clear + echo -e "${YELLOW}$(translate 'Network Commands')${NC}" + echo "------------------------------------------" + echo -e " 1) ${GREEN}ip a${NC} - $(translate 'Show network interfaces and IPs')" + echo -e " 2) ${GREEN}ip r${NC} - $(translate 'Show routing table')" + echo -e " 3) ${GREEN}ping ${NC} - $(translate 'Check connectivity with another host')" + echo -e " 4) ${GREEN}brctl show${NC} - $(translate 'Show configured network bridges')" + echo -e " 5) ${GREEN}ifreload -a${NC} - $(translate 'Reload network configuration (ifupdown2)')" + echo -e " 6) ${GREEN}cat /etc/network/interfaces${NC} - $(translate 'Show raw network configuration')" + echo -e " 0) $(translate 'Back to previous menu')" + echo + echo -en "${TAB}${BOLD}${YW}${HOLD}$(translate 'Enter number or paste a command: ') ${CL}" + read -r user_input + + case "$user_input" in + 1) cmd="ip a" ;; + 2) cmd="ip r" ;; + 3) cmd="ping " ;; + 4) cmd="brctl show" ;; + 5) cmd="ifreload -a" ;; + 6) cmd="cat /etc/network/interfaces" ;; + 0) return ;; + *) cmd="$user_input" ;; + esac + + echo -e " +${GREEN}> $cmd${NC} +" + bash -c "$cmd" + echo + msg_success "$(translate 'Press ENTER to return to the menu...')" + read -r tmp +} + + +# =============================================================== +# 05 Updates and Packages Commands +# =============================================================== +show_update_commands() { + clear + echo -e "${YELLOW}$(translate 'Updates and Packages Commands')${NC}" + echo "----------------------------------------------------" + echo -e " 1) ${GREEN}apt update && apt upgrade -y${NC} - $(translate 'Update and upgrade all system packages')" + echo -e " 2) ${GREEN}apt dist-upgrade -y${NC} - $(translate 'Full system upgrade, including dependencies')" + echo -e " 3) ${GREEN}pveupdate${NC} - $(translate 'Update Proxmox package lists')" + echo -e " 4) ${GREEN}pveupgrade${NC} - $(translate 'Show available Proxmox upgrades')" + echo -e " 5) ${GREEN}apt autoremove --purge${NC} - $(translate 'Remove unused packages and their config')" + echo -e " 0) $(translate 'Back to previous menu')" + echo + echo -en "${TAB}${BOLD}${YW}${HOLD}$(translate 'Enter number or paste a command: ') ${CL}" + read -r user_input + + case "$user_input" in + 1) cmd="apt update && apt upgrade -y" ;; + 2) cmd="apt dist-upgrade -y" ;; + 3) cmd="pveupdate" ;; + 4) cmd="pveupgrade" ;; + 5) cmd="apt autoremove --purge" ;; + 0) return ;; + *) cmd="$user_input" ;; + esac + + echo -e " +${GREEN}> $cmd${NC} +" + bash -c "$cmd" + echo + msg_success "$(translate 'Press ENTER to return to the menu...')" + read -r tmp +} + + +# =============================================================== +# 06 GPU Passthrough Commands +# =============================================================== +show_gpu_commands() { + clear + echo -e "${YELLOW}$(translate 'GPU Passthrough Commands')${NC}" + echo "------------------------------------------------" + echo -e " 1) ${GREEN}lspci -nn | grep -i nvidia${NC} - $(translate 'List NVIDIA PCI devices')" + echo -e " 2) ${GREEN}lspci -nn | grep -i vga${NC} - $(translate 'List all VGA compatible devices')" + echo -e " 3) ${GREEN}dmesg | grep -i vfio${NC} - $(translate 'Check VFIO module messages')" + echo -e " 4) ${GREEN}cat /etc/modprobe.d/vfio.conf${NC} - $(translate 'Review VFIO passthrough configuration')" + echo -e " 5) ${GREEN}update-initramfs -u${NC} - $(translate 'Apply initramfs changes (VFIO)')" + echo -e " 6) ${GREEN}cat /etc/default/grub${NC} - $(translate 'Review GRUB options for IOMMU')" + echo -e " 7) ${GREEN}update-grub${NC} - $(translate 'Apply GRUB changes')" + echo -e " 0) $(translate 'Back to previous menu')" + echo + echo -en "${TAB}${BOLD}${YW}${HOLD}$(translate 'Enter number or paste a command: ') ${CL}" + read -r user_input + + case "$user_input" in + 1) cmd="lspci -nn | grep -i nvidia" ;; + 2) cmd="lspci -nn | grep -i vga" ;; + 3) cmd="dmesg | grep -i vfio" ;; + 4) cmd="cat /etc/modprobe.d/vfio.conf" ;; + 5) cmd="update-initramfs -u" ;; + 6) cmd="cat /etc/default/grub" ;; + 7) cmd="update-grub" ;; + 0) return ;; + *) cmd="$user_input" ;; + esac + + echo -e " +${GREEN}> $cmd${NC} +" + bash -c "$cmd" + echo + msg_success "$(translate 'Press ENTER to return to the menu...')" + read -r tmp +} + + +# =============================================================== +# 07 ZFS Management Commands +# =============================================================== +show_zfs_commands() { + clear + echo -e "${YELLOW}$(translate 'ZFS Management Commands')${NC}" + echo "------------------------------------------------" + echo -e " 1) ${GREEN}zpool status${NC} - $(translate 'Show ZFS pool status')" + echo -e " 2) ${GREEN}zpool list${NC} - $(translate 'List all ZFS pools')" + echo -e " 3) ${GREEN}zfs list${NC} - $(translate 'List ZFS datasets and snapshots')" + echo -e " 4) ${GREEN}zpool scrub ${NC} - $(translate 'Start scrub for a ZFS pool')" + echo -e " 5) ${GREEN}zfs create /dataset${NC} - $(translate 'Create a new dataset in a ZFS pool')" + echo -e " 6) ${GREEN}zfs destroy /dataset${NC} - $(translate 'Destroy a ZFS dataset (irreversible)')" + echo -e " 0) $(translate 'Back to previous menu')" + echo + echo -en "${TAB}${BOLD}${YW}${HOLD}$(translate 'Enter number or paste a command: ') ${CL}" + read -r user_input + + case "$user_input" in + 1) cmd="zpool status" ;; + 2) cmd="zpool list" ;; + 3) cmd="zfs list" ;; + 4) cmd="zpool scrub " ;; + 5) cmd="zfs create /dataset" ;; + 6) cmd="zfs destroy /dataset" ;; + 0) return ;; + *) cmd="$user_input" ;; + esac + + echo -e "\n${GREEN}> $cmd${NC}\n" + bash -c "$cmd" + echo + msg_success "$(translate 'Press ENTER to return to the menu...')" + read -r tmp +} + + +# =============================================================== +# 08 Backup and Restore Commands +# =============================================================== +show_backup_commands() { + clear + echo -e "${YELLOW}$(translate 'Backup and Restore Commands')${NC}" + echo "------------------------------------------------------" + echo -e " 1) ${GREEN}vzdump ${NC} - $(translate 'Manual backup of a VM or CT')" + echo -e " 2) ${GREEN}vzdump --dumpdir /path${NC} - $(translate 'Backup to a specific directory')" + echo -e " 3) ${GREEN}vzdump --all${NC} - $(translate 'Backup all VMs and CTs')" + echo -e " 4) ${GREEN}qmrestore /path/backup.vma.zst ${NC} - $(translate 'Restore a VM from backup')" + echo -e " 5) ${GREEN}pct restore /path/backup.tar.zst${NC} - $(translate 'Restore a CT from backup')" + echo -e " 0) $(translate 'Back to previous menu')" + echo + echo -en "${TAB}${BOLD}${YW}${HOLD}$(translate 'Enter number or paste a command: ') ${CL}" + read -r user_input + + case "$user_input" in + 1) cmd="vzdump " ;; + 2) cmd="vzdump --dumpdir /path" ;; + 3) cmd="vzdump --all" ;; + 4) cmd="qmrestore /path/backup.vma.zst " ;; + 5) cmd="pct restore /path/backup.tar.zst" ;; + 0) return ;; + *) cmd="$user_input" ;; + esac + + echo -e " +${GREEN}> $cmd${NC} +" + bash -c "$cmd" + echo + msg_success "$(translate 'Press ENTER to return to the menu...')" + read -r tmp +} + + +# =============================================================== +# 09 Essential Tools Installation Commands +# =============================================================== +show_tools_commands() { + clear + echo -e "${YELLOW}$(translate 'Essential CLI Tools')${NC}" + echo "--------------------------------------------" + echo -e " 1) ${GREEN}htop${NC} - $(translate 'Interactive process viewer')" + echo -e " 2) ${GREEN}btop${NC} - $(translate 'Modern resource monitor')" + echo -e " 3) ${GREEN}iftop${NC} - $(translate 'Real-time bandwidth usage')" + echo -e " 4) ${GREEN}iotop${NC} - $(translate 'Monitor disk I/O usage')" + echo -e " 5) ${GREEN}tmux${NC} - $(translate 'Terminal multiplexer')" + echo -e " 6) ${GREEN}iperf3${NC} - $(translate 'Network throughput test')" + echo -e " 0) $(translate 'Back to previous menu')" + echo + echo -en "${TAB}${BOLD}${YW}${HOLD}$(translate 'Enter number or paste a command: ') ${CL}" + read -r user_input + + case "$user_input" in + 1) cmd="htop" ;; + 2) cmd="btop" ;; + 3) cmd="iftop" ;; + 4) cmd="iotop" ;; + 5) cmd="tmux" ;; + 6) cmd="iperf3" ;; + 0) return ;; + *) cmd="$user_input" ;; + esac + + echo -e " +${GREEN}> $cmd${NC} +" + bash -c "$cmd" + echo + msg_success "$(translate 'Press ENTER to return to the menu...')" + read -r tmp +} + + +# =============================================================== +# Main Menu +# =============================================================== +while true; do +OPTION=$(dialog --stdout \ + --title "$(translate 'Help and Info')" \ + --menu "$(translate 'Select a category of useful commands:')" 20 70 12 \ + 1 "$(translate 'Useful System Commands')" \ + 2 "$(translate 'VM and CT Management Commands')" \ + 3 "$(translate 'Storage and Disks Commands')" \ + 4 "$(translate 'Network Commands')" \ + 5 "$(translate 'Updates and Packages Commands')" \ + 6 "$(translate 'GPU Passthrough Commands')" \ + 7 "$(translate 'ZFS Management Commands')" \ + 8 "$(translate 'Backup and Restore Commands')" \ + 9 "$(translate 'Essential CLI Tools')" \ + 0 "$(translate 'Exit')") + case $OPTION in + 1) + show_system_commands + ;; + 2) + show_vm_ct_commands + ;; + 3) + show_storage_commands + ;; + 4) + show_network_commands + ;; + 5) + show_update_commands + ;; + 6) + show_gpu_commands + ;; + 7) + show_zfs_commands + ;; + 8) + show_backup_commands + ;; + 9) + show_tools_commands + ;; + 0) clear + break + ;; + + *) + msg_info2 "$(translate 'Invalid option, please try again.')" + read -r + ;; + esac +done