install_vmtools.sh
· 2.7 KiB · Bash
Raw
#!/bin/bash
set -e
# Define variables
ISO_FILENAME="SMTX_VMTOOLS-4.0.0-2506271023.iso"
ISO_FILE="/tmp/${ISO_FILENAME}"
MOUNT_POINT="/mnt/wuke-vmtools"
# Extract version from ISO filename
VMTOOLS_VERSION=$(echo "$ISO_FILENAME" | awk -F'-' '{print $2}')
echo "Extracted VMTools version: $VMTOOLS_VERSION"
# Detect gateway and set ISO_URL
GATEWAY=$(ip route | grep default | awk '{print $3}')
echo "Detected gateway: $GATEWAY"
if [[ $GATEWAY == 172.29.16.* ]]; then
ISO_URL="http://172.29.16.5/VMTOOLS/${VMTOOLS_VERSION}/${ISO_FILENAME}"
elif [[ $GATEWAY == 172.29.48.* ]]; then
ISO_URL="http://172.29.48.5/VMTOOLS/${VMTOOLS_VERSION}/${ISO_FILENAME}"
elif [[ $GATEWAY == 172.29.80.* ]]; then
ISO_URL="http://172.29.80.5/VMTOOLS/${VMTOOLS_VERSION}/${ISO_FILENAME}"
elif [[ $GATEWAY == 172.29.112.* ]]; then
ISO_URL="http://172.29.112.5/VMTOOLS/${VMTOOLS_VERSION}/${ISO_FILENAME}"
else
echo "Unsupported gateway network: $GATEWAY"
exit 1
fi
echo "Selected ISO URL: $ISO_URL"
# Function to check and install a package if missing
install_package_if_missing() {
local package_name=$1
if command -v yum >/dev/null 2>&1; then
if ! rpm -q "$package_name" >/dev/null 2>&1; then
echo "Installing $package_name using yum..."
yum install -y "$package_name"
else
echo "Package $package_name already installed (yum)."
fi
elif command -v apt >/dev/null 2>&1; then
if ! dpkg -s "$package_name" >/dev/null 2>&1; then
echo "Installing $package_name using apt..."
apt update
apt install -y "$package_name"
else
echo "Package $package_name already installed (apt)."
fi
else
echo "Unsupported OS: yum or apt not found."
exit 1
fi
}
# 1. Install required packages
install_package_if_missing tar
install_package_if_missing bzip2
install_package_if_missing curl
# 2. Check if ISO URL is accessible
echo "Checking if ISO URL is accessible..."
if ! curl --head --silent --fail "$ISO_URL" >/dev/null; then
echo "Error: ISO URL $ISO_URL is not accessible."
exit 1
fi
# 3. Download the ISO file
echo "Downloading VMTools ISO..."
curl -o "$ISO_FILE" "$ISO_URL"
# 4. Check if /mnt/wuke-vmtools exists
if [ -d "$MOUNT_POINT" ]; then
echo "Directory $MOUNT_POINT exists, removing..."
umount "$MOUNT_POINT" || true
rm -rf "$MOUNT_POINT"
fi
echo "Creating directory $MOUNT_POINT..."
mkdir -p "$MOUNT_POINT"
# 5. Mount the ISO
echo "Mounting ISO file to $MOUNT_POINT..."
mount -o loop "$ISO_FILE" "$MOUNT_POINT"
# 6. Execute the installation script
echo "Running VMTools installation script..."
bash "$MOUNT_POINT/SMTX_VM_TOOLS_INSTALL.sh"
# 7. Cleanup
echo "Cleaning up temporary files..."
umount "$MOUNT_POINT" || true
rm -f "$ISO_FILE"
rm -rf "$MOUNT_POINT"
echo "Installation and cleanup completed."
| 1 | #!/bin/bash |
| 2 | set -e |
| 3 | |
| 4 | # Define variables |
| 5 | ISO_FILENAME="SMTX_VMTOOLS-4.0.0-2506271023.iso" |
| 6 | ISO_FILE="/tmp/${ISO_FILENAME}" |
| 7 | MOUNT_POINT="/mnt/wuke-vmtools" |
| 8 | |
| 9 | # Extract version from ISO filename |
| 10 | VMTOOLS_VERSION=$(echo "$ISO_FILENAME" | awk -F'-' '{print $2}') |
| 11 | echo "Extracted VMTools version: $VMTOOLS_VERSION" |
| 12 | |
| 13 | # Detect gateway and set ISO_URL |
| 14 | GATEWAY=$(ip route | grep default | awk '{print $3}') |
| 15 | echo "Detected gateway: $GATEWAY" |
| 16 | |
| 17 | if [[ $GATEWAY == 172.29.16.* ]]; then |
| 18 | ISO_URL="http://172.29.16.5/VMTOOLS/${VMTOOLS_VERSION}/${ISO_FILENAME}" |
| 19 | elif [[ $GATEWAY == 172.29.48.* ]]; then |
| 20 | ISO_URL="http://172.29.48.5/VMTOOLS/${VMTOOLS_VERSION}/${ISO_FILENAME}" |
| 21 | elif [[ $GATEWAY == 172.29.80.* ]]; then |
| 22 | ISO_URL="http://172.29.80.5/VMTOOLS/${VMTOOLS_VERSION}/${ISO_FILENAME}" |
| 23 | elif [[ $GATEWAY == 172.29.112.* ]]; then |
| 24 | ISO_URL="http://172.29.112.5/VMTOOLS/${VMTOOLS_VERSION}/${ISO_FILENAME}" |
| 25 | else |
| 26 | echo "Unsupported gateway network: $GATEWAY" |
| 27 | exit 1 |
| 28 | fi |
| 29 | |
| 30 | echo "Selected ISO URL: $ISO_URL" |
| 31 | |
| 32 | # Function to check and install a package if missing |
| 33 | install_package_if_missing() { |
| 34 | local package_name=$1 |
| 35 | |
| 36 | if command -v yum >/dev/null 2>&1; then |
| 37 | if ! rpm -q "$package_name" >/dev/null 2>&1; then |
| 38 | echo "Installing $package_name using yum..." |
| 39 | yum install -y "$package_name" |
| 40 | else |
| 41 | echo "Package $package_name already installed (yum)." |
| 42 | fi |
| 43 | elif command -v apt >/dev/null 2>&1; then |
| 44 | if ! dpkg -s "$package_name" >/dev/null 2>&1; then |
| 45 | echo "Installing $package_name using apt..." |
| 46 | apt update |
| 47 | apt install -y "$package_name" |
| 48 | else |
| 49 | echo "Package $package_name already installed (apt)." |
| 50 | fi |
| 51 | else |
| 52 | echo "Unsupported OS: yum or apt not found." |
| 53 | exit 1 |
| 54 | fi |
| 55 | } |
| 56 | |
| 57 | # 1. Install required packages |
| 58 | install_package_if_missing tar |
| 59 | install_package_if_missing bzip2 |
| 60 | install_package_if_missing curl |
| 61 | |
| 62 | # 2. Check if ISO URL is accessible |
| 63 | echo "Checking if ISO URL is accessible..." |
| 64 | if ! curl --head --silent --fail "$ISO_URL" >/dev/null; then |
| 65 | echo "Error: ISO URL $ISO_URL is not accessible." |
| 66 | exit 1 |
| 67 | fi |
| 68 | |
| 69 | # 3. Download the ISO file |
| 70 | echo "Downloading VMTools ISO..." |
| 71 | curl -o "$ISO_FILE" "$ISO_URL" |
| 72 | |
| 73 | # 4. Check if /mnt/wuke-vmtools exists |
| 74 | if [ -d "$MOUNT_POINT" ]; then |
| 75 | echo "Directory $MOUNT_POINT exists, removing..." |
| 76 | umount "$MOUNT_POINT" || true |
| 77 | rm -rf "$MOUNT_POINT" |
| 78 | fi |
| 79 | |
| 80 | echo "Creating directory $MOUNT_POINT..." |
| 81 | mkdir -p "$MOUNT_POINT" |
| 82 | |
| 83 | # 5. Mount the ISO |
| 84 | echo "Mounting ISO file to $MOUNT_POINT..." |
| 85 | mount -o loop "$ISO_FILE" "$MOUNT_POINT" |
| 86 | |
| 87 | # 6. Execute the installation script |
| 88 | echo "Running VMTools installation script..." |
| 89 | bash "$MOUNT_POINT/SMTX_VM_TOOLS_INSTALL.sh" |
| 90 | |
| 91 | # 7. Cleanup |
| 92 | echo "Cleaning up temporary files..." |
| 93 | umount "$MOUNT_POINT" || true |
| 94 | rm -f "$ISO_FILE" |
| 95 | rm -rf "$MOUNT_POINT" |
| 96 | |
| 97 | echo "Installation and cleanup completed." |