#!/bin/bash # ------------------------------------------------------------------------------------------------ # Script to download, extract, and install the Dell PERCCLI utility on a Linux system. # Note: This script requires 'wget' and 'tar'. It assumes execution as 'root' (no 'sudo' needed). # ------------------------------------------------------------------------------------------------ # --- Configuration --- PERCCLI_URL="https://dl.dell.com/FOLDER13074167M/1/PERCCLI_7.3208.0_Linux_A01.tar.gz" ARCHIVE_NAME="PERCCLI_7.3208.0_Linux_A01.tar.gz" TEMP_DIR="perccli_install_temp" echo "Starting PERCCLI installation script..." echo "Target URL: $PERCCLI_URL" # 1. Download the archive echo "1. Downloading $ARCHIVE_NAME..." # Using wget to download the file, adding a User-Agent to prevent 403 errors on some servers wget --no-check-certificate --user-agent="Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1)" "$PERCCLI_URL" -O "$ARCHIVE_NAME" if [ $? -ne 0 ]; then echo "ERROR: Failed to download the file. Check your network connection and ensure 'wget' is installed, or try a different User-Agent." exit 1 fi echo "Download complete." # 2. Extract the archive echo "2. Extracting the archive..." mkdir -p "$TEMP_DIR" # Extracting the tar.gz file into the temporary directory tar -xzf "$ARCHIVE_NAME" -C "$TEMP_DIR" if [ $? -ne 0 ]; then echo "ERROR: Failed to extract the archive. The file may be incomplete or corrupted." rm -rf "$TEMP_DIR" exit 1 fi echo "Extraction complete to $TEMP_DIR." # 3. Locate the installation package # IMPORTANT CHANGE: Prioritizing .deb files as Proxmox (Debian) is the target OS. PACKAGE_FILE=$(find "$TEMP_DIR" -type f \( -name "*.deb" -o -name "*.rpm" \) | head -n 1) if [ -z "$PACKAGE_FILE" ]; then echo "ERROR: Could not find any .deb or .rpm installation package within the archive." echo "Please navigate to '$TEMP_DIR' and install the appropriate package manually." exit 1 fi echo "3. Found package file: $PACKAGE_FILE" # 4. Install the package using the appropriate command (no 'sudo' needed as running as root) echo "4. Attempting to install the package." INSTALL_SUCCESS=0 if [[ "$PACKAGE_FILE" == *.deb ]]; then echo "Detected DEB package. Trying to install with 'dpkg -i'..." if command -v dpkg >/dev/null 2>&1; then # Removed 'sudo' dpkg -i "$PACKAGE_FILE" INSTALL_SUCCESS=$? else # Explicitly setting INSTALL_SUCCESS=1 if the command is not found echo "ERROR: 'dpkg' command not found. Please ensure the package manager is available." INSTALL_SUCCESS=1 fi elif [[ "$PACKAGE_FILE" == *.rpm ]]; then echo "Detected RPM package. Trying to install with 'rpm -ivh'..." if command -v rpm >/dev/null 2>&1; then # Removed 'sudo' rpm -ivh "$PACKAGE_FILE" INSTALL_SUCCESS=$? else # Explicitly setting INSTALL_SUCCESS=1 if the command is not found echo "ERROR: 'rpm' command not found. This confirms you are running a Debian-based system (like Proxmox/Ubuntu)." echo "Please install the 'rpm' package manually, or if running Proxmox, use 'apt install alien' to convert the package to .deb and install it." INSTALL_SUCCESS=1 fi else echo "ERROR: Found file $PACKAGE_FILE is neither .deb nor .rpm. Manual installation is required." INSTALL_SUCCESS=1 fi # 5. Cleanup and Verification # The cleanup step now correctly checks the INSTALL_SUCCESS status. if [ $INSTALL_SUCCESS -eq 0 ]; then echo "" echo "5. Installation successful. Cleaning up temporary files." rm -f "$ARCHIVE_NAME" rm -rf "$TEMP_DIR" echo "PERCCLI tool should now be available." echo "Verify installation by running: perccli /c0 show" else echo "" echo "5. Installation failed. The archive '$ARCHIVE_NAME' and temporary directory '$TEMP_DIR' are retained for manual debugging." echo "The package file is located at: $PACKAGE_FILE" fi # ------------------------------------------------------------------------------------------------