Last active 7 months ago

install_vmtools.sh Raw
1#!/bin/bash
2set -e
3
4# Define variables
5ISO_FILENAME="SMTX_VMTOOLS-4.0.0-2506271023.iso"
6ISO_FILE="/tmp/${ISO_FILENAME}"
7MOUNT_POINT="/mnt/wuke-vmtools"
8
9# Extract version from ISO filename
10VMTOOLS_VERSION=$(echo "$ISO_FILENAME" | awk -F'-' '{print $2}')
11echo "Extracted VMTools version: $VMTOOLS_VERSION"
12
13# Detect gateway and set ISO_URL
14GATEWAY=$(ip route | grep default | awk '{print $3}')
15echo "Detected gateway: $GATEWAY"
16
17if [[ $GATEWAY == 172.29.16.* ]]; then
18 ISO_URL="http://172.29.16.5/VMTOOLS/${VMTOOLS_VERSION}/${ISO_FILENAME}"
19elif [[ $GATEWAY == 172.29.48.* ]]; then
20 ISO_URL="http://172.29.48.5/VMTOOLS/${VMTOOLS_VERSION}/${ISO_FILENAME}"
21elif [[ $GATEWAY == 172.29.80.* ]]; then
22 ISO_URL="http://172.29.80.5/VMTOOLS/${VMTOOLS_VERSION}/${ISO_FILENAME}"
23elif [[ $GATEWAY == 172.29.112.* ]]; then
24 ISO_URL="http://172.29.112.5/VMTOOLS/${VMTOOLS_VERSION}/${ISO_FILENAME}"
25else
26 echo "Unsupported gateway network: $GATEWAY"
27 exit 1
28fi
29
30echo "Selected ISO URL: $ISO_URL"
31
32# Function to check and install a package if missing
33install_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
58install_package_if_missing tar
59install_package_if_missing bzip2
60install_package_if_missing curl
61
62# 2. Check if ISO URL is accessible
63echo "Checking if ISO URL is accessible..."
64if ! curl --head --silent --fail "$ISO_URL" >/dev/null; then
65 echo "Error: ISO URL $ISO_URL is not accessible."
66 exit 1
67fi
68
69# 3. Download the ISO file
70echo "Downloading VMTools ISO..."
71curl -o "$ISO_FILE" "$ISO_URL"
72
73# 4. Check if /mnt/wuke-vmtools exists
74if [ -d "$MOUNT_POINT" ]; then
75 echo "Directory $MOUNT_POINT exists, removing..."
76 umount "$MOUNT_POINT" || true
77 rm -rf "$MOUNT_POINT"
78fi
79
80echo "Creating directory $MOUNT_POINT..."
81mkdir -p "$MOUNT_POINT"
82
83# 5. Mount the ISO
84echo "Mounting ISO file to $MOUNT_POINT..."
85mount -o loop "$ISO_FILE" "$MOUNT_POINT"
86
87# 6. Execute the installation script
88echo "Running VMTools installation script..."
89bash "$MOUNT_POINT/SMTX_VM_TOOLS_INSTALL.sh"
90
91# 7. Cleanup
92echo "Cleaning up temporary files..."
93umount "$MOUNT_POINT" || true
94rm -f "$ISO_FILE"
95rm -rf "$MOUNT_POINT"
96
97echo "Installation and cleanup completed."