Releases: coelacant1/ProxmoxScripts
Release v2.1.6
Release v2.1.6 - Bug fixes, username support, and validation improvements
Added
- Username Configuration - Support for specifying SSH usernames per node
- Added
usernamefield 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@ipthroughout GUI
- Added
- 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.shrunsbash -non all .sh files - Catches structural errors and orphaned code blocks
- Shows file names and line numbers for syntax errors
- New Check 1a. in
- Enhanced Source Verification - Improved validation of shellcheck directives
VerifySourceCalls.pynow 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
jqandsshpass - Documented that sshpass is only needed for password-based authentication
- Separated build-time tools from runtime dependencies
- Updated installation command to include
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.shto use configured username __ssh_exec__,__scp_exec__,__scp_exec_recursive__,__scp_download__now accept username parameterConfigManager.shtracks username per node inNODE_USERNAMESassociative array
- Updated all SSH/SCP operations in
- Missing Validation - Syntax check gap closed
_RunChecks.shnever 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" defaultUtilities/ConfigManager.sh- Added NODE_USERNAMES tracking and get_node_username() functionUtilities/RemoteExecutor.sh- All remote operations parameterized with usernameGUI.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 -nsyntax check was not being run in validation suiteDeadCodeCheck.pyonly checks unused functions/variables, not code structureVerifySourceCalls.pydidn't validate orphaned error handlers
The fix adds syntax validation to prevent similar issues...
Commit: fc91a2d
Release v2.1.4
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
.logand.debug.logfiles 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 pipefailfor 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
v1.51
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
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
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
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
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
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
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