Skip to content

Releases: coelacant1/ProxmoxScripts

Release v2.1.6

25 Nov 15:35
fc91a2d

Choose a tag to compare

Release v2.1.6 - Bug fixes, username support, and validation improvements

Added

  • Username Configuration - Support for specifying SSH usernames per node
    • Added username field to nodes.json configuration
    • Username prompts in all node configuration flows (manual entry, saved nodes, IP ranges, VMID ranges)
    • Default username is "root" with option to specify alternatives
    • Display format changed to username@ip throughout GUI
  • Dependency Checking - Runtime validation before remote execution
    • __check_remote_dependencies__() function checks for sshpass and jq
    • Helpful error messages with installation commands for all major distros
    • Notes that sshpass is not required when using SSH keys
  • Syntax Validation - Basic shell syntax checking added to validation suite
    • New Check 1a. in _RunChecks.sh runs bash -n on all .sh files
    • Catches structural errors and orphaned code blocks
    • Shows file names and line numbers for syntax errors
  • Enhanced Source Verification - Improved validation of shellcheck directives
    • VerifySourceCalls.py now validates shellcheck comments have matching source statements
    • Detects orphaned shellcheck directives within 5 lines
    • Prevents mismatched documentation and code

Changed

  • Remote Execution UI - Scripts hidden in remote mode for better UX
    • GUI.sh and CCPVE.sh hidden from root menu when in remote execution mode
    • Prevents accidental execution of control scripts on remote nodes
    • Scripts still shown in local mode and subdirectories
  • README.md - Clarified dependency requirements
    • Updated installation command to include jq and sshpass
    • Documented that sshpass is only needed for password-based authentication
    • Separated build-time tools from runtime dependencies

Fixed

  • Critical: Orphaned Error Handler - Fixed syntax error in Host/HostInfo.sh
    • Removed orphaned error handler code block (lines 34-36)
    • File had error message without matching source statement
    • Bug prevented script execution on remote nodes
  • Username Hardcoding - Removed hardcoded "root@" from all remote operations
    • Updated all SSH/SCP operations in RemoteExecutor.sh to use configured username
    • __ssh_exec__, __scp_exec__, __scp_exec_recursive__, __scp_download__ now accept username parameter
    • ConfigManager.sh tracks username per node in NODE_USERNAMES associative array
  • Missing Validation - Syntax check gap closed
    • _RunChecks.sh never validated basic syntax :C
    • Now catches structural errors that bash -n would detect
    • Prevents orphaned code and malformed control structures from entering repository

Technical Details

  • nodes.json.template - Added username field with "root" default
  • Utilities/ConfigManager.sh - Added NODE_USERNAMES tracking and get_node_username() function
  • Utilities/RemoteExecutor.sh - All remote operations parameterized with username
  • GUI.sh - Dependency checking, username prompts, and script filtering
  • .check/VerifySourceCalls.py - Enhanced shellcheck directive validation
  • .check/_RunChecks.sh - Added Check 1a. for syntax validation

Developer Notes

The orphaned error handler bug existed because:

  • bash -n syntax check was not being run in validation suite
  • DeadCodeCheck.py only checks unused functions/variables, not code structure
  • VerifySourceCalls.py didn't validate orphaned error handlers
    The fix adds syntax validation to prevent similar issues...

Commit: fc91a2d

Release v2.1.4

25 Nov 05:21
918e79f

Choose a tag to compare

Release v2.1.4

Version 2.0 is an architectural refactor that provides comprehensive utility frameworks, standardizes script behavior across the entire codebase, and adds remote cluster management capabilities.

Key Improvements:

Unified Utility Framework

  • ArgumentParser.sh - Standardized argument parsing with built-in validation, automatic help text generation, and support for common types (vmid, string, integer, boolean, range)
  • BulkOperations.sh - Unified framework for bulk VM/LXC operations with consistent error handling, progress reporting, and operation summaries
  • Operations.sh (formerly ProxmoxAPI.sh) - Centralized Proxmox API wrapper functions for VM/LXC operations, disk management, and pool operations
  • Network.sh - Network utility functions for IP validation, manipulation, and network configuration
  • TestFramework.sh - Comprehensive testing framework with unit testing, integration testing, and automated testing

Remote Cluster Management

  • Execute scripts on single or multiple Proxmox nodes without re-downloading the repository
  • Temporary multi-remote mode supporting IP ranges (192.168.1.100-200) or VMID ranges
  • Dual log output with separate .log and .debug.log files for structured logging (local and remote)
  • Debug flag support (./GUI.sh -d) for detailed remote execution logging
  • Interrupt handling (Ctrl+C) cleanly cancels remaining nodes during remote operations

Comprehensive Testing System

  • Test suites for all major utility frameworks (_TestArgumentParser.sh, _TestBulkOperations.sh, _TestNetwork.sh, _TestOperations.sh, _TestStateManager.sh)
  • RunAllTests.sh for automated test execution across all utilities
  • Integration test examples demonstrating proper framework usage
  • Unit testing capabilities with assertion functions and result reporting

Script Compliance Standards

  • All scripts refactored with consistent headers: shebang -> documentation -> Function Index -> set -euo pipefail -> code
  • Standardized set -euo pipefail for robust error handling (fixed duplicates and misplaced commands)
  • All bulk operation scripts (80+ files) migrated to use ArgumentParser and BulkOperations frameworks
  • Consistent error handling and user feedback across entire codebase
  • Automated source dependency verification with VerifySourceCalls.py

Quality Assurance Tools

  • Enhanced .check/_RunChecks.sh with better validation and reporting
  • UpdateUtilityDocumentation.py for automatic utility function documentation
  • VerifySourceCalls.py with fix mode for adding/removing dependencies and shellcheck directives
  • _ScriptComplianceChecklist.md for code quality verification

Cross-Platform GUI Improvements

  • Auto-detects package manager (apt, dnf, yum, zypper, pacman) for any Linux distribution
  • Polymorphic menu system with centralized common operations (settings, help, back, exit)
  • Branch management accessible from all menus
  • Simplified navigation with consistent input prompts
  • Parameter history with readline shortcuts

New Utility Scripts

  • VirtualMachines/Operations/BulkHibernate.sh, BulkSuspend.sh, BulkResume.sh
  • VirtualMachines/Hardware/BulkToggleTabletPointer.sh
  • VirtualMachines/Storage/BulkConfigureDisk.sh
  • Storage/AddStorage.sh (NFS, SMB/CIFS, PBS support)
  • Storage/RemoveStorage.sh (safe removal with usage checks)

Commit: 918e79f

v1.52

06 Oct 14:22
63c2ff1

Choose a tag to compare

Commit Message: Merge pull request #18 from coelacant1/testing

Implemented BatchRunCLI for nested calls to virtualized proxmox hosts
Build Number: 52

v1.51

03 Oct 18:11

Choose a tag to compare

Commit Message: Add CLI calls to script library and refactor bulk remote scripts

  • Added BatchRunCLI.sh for interactive/non-interactive bulk CLI execution
  • Refactored Proxmox bulk remote scripts to use new utilities
  • Updated CCPVE.sh to set up CLI calls
  • Consolidated script style guide
    Build Number: 51

v1.50

01 Oct 21:58

Choose a tag to compare

Commit Message: Added bulk scripts and added style guide

  • Added bulk disable autostart on all nested VMs
  • Added bulk unmount ISOs on all nested VMs
  • Added ChangeAllMACPrefix.sh for editing the prefix' of a single host instance.
  • Added the script style guide so I can try to not suck and actually keep things consistent
  • Changed the example script so it was more useful

Amend:

  • Fixed nested call for non root users
    Build Number: 50

v1.49

01 Oct 21:43

Choose a tag to compare

Commit Message: Added bulk scripts and added style guide

  • Added bulk disable autostart on all nested VMs

  • Added bulk unmount ISOs on all nested VMs

  • Added ChangeAllMACPrefix.sh for editing the prefix' of a single host instance.

  • Added the script style guide so I can try to not suck and actually keep things consistent

  • Changed the example script so it was more useful

  • Amend: fixed nested call for non root users
    Build Number: 49

v1.48

01 Oct 21:25

Choose a tag to compare

Commit Message: Added bulk scripts and added style guide

  • Added bulk disable autostart on all nested VMs
  • Added bulk unmount ISOs on all nested VMs
  • Added ChangeAllMACPrefix.sh for editing the prefix' of a single host instance.
  • Added the script style guide so I can try to not suck and actually keep things consistent
  • Changed the example script so it was more useful
    Build Number: 48

v1.47

16 Sep 16:28

Choose a tag to compare

Commit Message: Added feature for bulk reconfiguring Mac Addresses

Bulk clone and set IP now randomizes all mac addresses and changes the MAC prefix to BC:XX:XX with XXXX being the VMID
Build Number: 47

v1.46

16 Sep 16:07

Choose a tag to compare

Commit Message: Added feature for bulk reconfiguring Mac Addresses

Bulk clone and set IP now randomizes all mac addresses and changes the MAC prefix to BC:XX:XX with XXXX being the VMID
Build Number: 46

v1.45

10 Sep 02:20

Choose a tag to compare

Commit Message: Added feature for bulk reconfiguring Mac Addresses

Bulk clone and set IP now randomizes all mac addresses and changes the MAC prefix to BC:XX:XX with XXXX being the VMID
Build Number: 45