最后活跃于 7 months ago

修订 5697eb46649298551fe4e68637056ad626e1fede

install_vmtools.sh 原始文件
1#!/bin/bash
2set -e
3
4# Define variables
5ISO_FILENAME="SMTX_VMTOOLS-3.2.0-2501210639.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. Download the ISO file
63echo "Downloading VMTools ISO..."
64curl -o "$ISO_FILE" "$ISO_URL"
65
66# 3. Check if /mnt/wuke-vmtools exists
67if [ -d "$MOUNT_POINT" ]; then
68 echo "Directory $MOUNT_POINT exists, removing..."
69 umount "$MOUNT_POINT" || true
70 rm -rf "$MOUNT_POINT"
71fi
72
73echo "Creating directory $MOUNT_POINT..."
74mkdir -p "$MOUNT_POINT"
75
76# 4. Mount the ISO
77echo "Mounting ISO file to $MOUNT_POINT..."
78mount -o loop "$ISO_FILE" "$MOUNT_POINT"
79
80# 5. Execute the installation script
81echo "Running VMTools installation script..."
82bash "$MOUNT_POINT/SMTX_VM_TOOLS_INSTALL.sh"
83
84# 6. Cleanup
85echo "Cleaning up temporary files..."
86umount "$MOUNT_POINT" || true
87rm -f "$ISO_FILE"
88rm -rf "$MOUNT_POINT"
89
90echo "Installation and cleanup completed."