Last active 6 months ago

uk's Avatar uk revised this gist 8 months ago. Go to revision

1 file changed, 1 insertion, 1 deletion

install_vmtools.sh

@@ -2,7 +2,7 @@
2 2 set -e
3 3
4 4 # Define variables
5 - ISO_FILENAME="SMTX_VMTOOLS-3.2.0-2501210639.iso"
5 + ISO_FILENAME="SMTX_VMTOOLS-3.2.2-2501210639.iso"
6 6 ISO_FILE="/tmp/${ISO_FILENAME}"
7 7 MOUNT_POINT="/mnt/wuke-vmtools"
8 8

uk's Avatar uk revised this gist 8 months ago. Go to revision

No changes

uk revised this gist 9 months ago. Go to revision

1 file changed, 97 insertions

install_vmtools.sh(file created)

@@ -0,0 +1,97 @@
1 + #!/bin/bash
2 + set -e
3 +
4 + # Define variables
5 + ISO_FILENAME="SMTX_VMTOOLS-3.2.0-2501210639.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."

uk revised this gist 9 months ago. Go to revision

1 file changed, 1 insertion, 1 deletion

install_ohmyzsh.sh

@@ -11,7 +11,7 @@ fi
11 11 if command -v yum &>/dev/null; then
12 12 $SUDO yum install -y -q git zsh bash-completion wget unzip tree tmux vim sysstat &> /dev/null
13 13 elif command -v apt &>/dev/null; then
14 - $SUDO apt update -qq
14 + $SUDO apt update -qq &>/dev/null
15 15 $SUDO apt install -y git zsh bash-completion wget unzip tree tmux vim sysstat &> /dev/null
16 16 else
17 17 echo "[ERROR] unsupport os" >&2

uk revised this gist 9 months ago. Go to revision

1 file changed, 11 insertions, 4 deletions

install_ohmyzsh.sh

@@ -1,11 +1,18 @@
1 1 #!/bin/bash
2 2
3 + # check sudo
4 + if command -v sudo &>/dev/null; then
5 + SUDO=sudo
6 + else
7 + SUDO=""
8 + fi
9 +
3 10 # install package
4 11 if command -v yum &>/dev/null; then
5 - sudo yum install -y -q git zsh bash-completion wget unzip tree tmux vim sysstat &> /dev/null
12 + $SUDO yum install -y -q git zsh bash-completion wget unzip tree tmux vim sysstat &> /dev/null
6 13 elif command -v apt &>/dev/null; then
7 - sudo apt update -qq
8 - sudo apt install -y git zsh bash-completion wget unzip tree tmux vim sysstat &> /dev/null
14 + $SUDO apt update -qq
15 + $SUDO apt install -y git zsh bash-completion wget unzip tree tmux vim sysstat &> /dev/null
9 16 else
10 17 echo "[ERROR] unsupport os" >&2
11 18 exit 1
@@ -39,4 +46,4 @@ cat >> ~/.zshrc <<UK
39 46 zstyle ':omz:update' mode disabled
40 47 HIST_STAMPS="yyyy-mm-dd"
41 48 alias vi="vim"
42 - UK
49 + UK

uk revised this gist 9 months ago. Go to revision

1 file changed, 10 insertions, 1 deletion

install_ohmyzsh.sh

@@ -1,6 +1,15 @@
1 1 #!/bin/bash
2 2
3 - yum install git zsh bash-completion wget unzip tree tmux vim sysstat -y -q &> /dev/null || true
3 + # install package
4 + if command -v yum &>/dev/null; then
5 + sudo yum install -y -q git zsh bash-completion wget unzip tree tmux vim sysstat &> /dev/null
6 + elif command -v apt &>/dev/null; then
7 + sudo apt update -qq
8 + sudo apt install -y git zsh bash-completion wget unzip tree tmux vim sysstat &> /dev/null
9 + else
10 + echo "[ERROR] unsupport os" >&2
11 + exit 1
12 + fi
4 13
5 14 # install oh-my-zsh
6 15 git clone https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git

uk revised this gist 9 months ago. Go to revision

4 files changed, 104 insertions

packer_rename-no-mf.sh(file created)

@@ -0,0 +1,23 @@
1 + #!/bin/bash
2 +
3 + set -o errexit
4 + set -o nounset
5 + set -o pipefail
6 +
7 + VM_NEW_NAME=$1
8 +
9 + # 提取当前OVF文件名
10 + VM_NOW_NAME=$(basename *.ovf | awk -F '.ovf' '{print $1}')
11 +
12 + # 重命名OVF文件和VMDK文件
13 + mv "$VM_NOW_NAME".ovf "$VM_NEW_NAME".ovf
14 + mv "$VM_NOW_NAME"-1.vmdk "$VM_NEW_NAME".vmdk
15 +
16 + # 在OVF文件中替换名称
17 + sed -i "s/$VM_NOW_NAME/$VM_NEW_NAME/g" "$VM_NEW_NAME".ovf
18 + sed -i "s/${VM_NEW_NAME}-1/$VM_NEW_NAME/g" "$VM_NEW_NAME".ovf
19 +
20 + echo "#### PACKER_COMPLETE ####"
21 +
22 + # 脚本执行完以后,删除本脚本
23 + rm -f "$0"

packer_rename.sh(file created)

@@ -0,0 +1,29 @@
1 + #!/bin/bash
2 +
3 + set -o errexit
4 + set -o nounset
5 + set -o pipefail
6 +
7 + VM_NEW_NAME=$1
8 +
9 + # 提取当前OVF文件名
10 + VM_NOW_NAME=$(basename *.ovf | awk -F '.ovf' '{print $1}')
11 +
12 + # 重命名OVF文件和VMDK文件
13 + mv "$VM_NOW_NAME".ovf "$VM_NEW_NAME".ovf
14 + mv "$VM_NOW_NAME"-1.vmdk "$VM_NEW_NAME".vmdk
15 +
16 + # 在OVF文件中替换名称
17 + sed -i "s/$VM_NOW_NAME/$VM_NEW_NAME/g" "$VM_NEW_NAME".ovf
18 + sed -i "s/${VM_NEW_NAME}-1/$VM_NEW_NAME/g" "$VM_NEW_NAME".ovf
19 +
20 + # 增加 mf 文件
21 + openssl sha256 "$VM_NEW_NAME".vmdk "$VM_NEW_NAME".ovf > "$VM_NEW_NAME".mf
22 +
23 + # 导出成 OVA
24 + tar -cf "$VM_NEW_NAME".ova "$VM_NEW_NAME".ovf "$VM_NEW_NAME".vmdk "$VM_NEW_NAME".mf
25 +
26 + echo "#### PACKER_COMPLETE ####"
27 +
28 + # 脚本执行完以后,删除本脚本
29 + rm -f "$0"

snippetfile1.txt(file created)

@@ -0,0 +1,25 @@
1 + #!/bin/bash
2 +
3 + set -o errexit
4 + set -o nounset
5 + set -o pipefail
6 +
7 + VM_NEW_NAME=$1
8 +
9 + # 进入 WORKDIR
10 + cd assets
11 +
12 + # 提取当前OVF文件名
13 + VM_NOW_NAME=$(basename packer-*.ovf | awk -F. '{print $1}')
14 +
15 + # 重命名OVF文件和VMDK文件
16 + mv "$VM_NOW_NAME".ovf "$VM_NEW_NAME".ovf
17 + mv "$VM_NOW_NAME"-1.vmdk "$VM_NEW_NAME"-1.vmdk
18 +
19 + # 在OVF文件中替换名称
20 + sed -i "s/$VM_NOW_NAME/$VM_NEW_NAME/g" "$VM_NEW_NAME".ovf
21 +
22 + # 导出成 OVA
23 + tar -cf "$VM_NEW_NAME".ova "$VM_NEW_NAME".ovf "$VM_NEW_NAME"-1.vmdk
24 +
25 + echo "#### PACKER_COMPLETE ####"

tower_shutdown_delete-old-vm.sh(file created)

@@ -0,0 +1,27 @@
1 + #!/bin/bash
2 +
3 + set -o errexit
4 + set -o nounset
5 + set -o pipefail
6 +
7 + export TOWER_HOST=$TOWER_HOST
8 + export TOWER_USERNAME=$TOWER_USERNAME
9 + export TOWER_PASSWORD=$TOWER_PASSWORD
10 + export VM_NAME=$VM_NAME
11 + export TOWER_SOURCE=LOCAL
12 +
13 + env
14 +
15 + # 下载二进制命令并授予执行权限
16 + wget -O /tmp/shutdown-vm http://192.168.48.2/Software/bin/tower/shutdown-vm-alpine
17 + wget -O /tmp/delete-vm http://192.168.48.2/Software/bin/tower/delete-vm-alpine
18 + chmod +x /tmp/shutdown-vm /tmp/delete-vm
19 +
20 + # 强制关机
21 + /tmp/shutdown-vm -force -vm $VM_NAME || true
22 +
23 + # 删除虚拟机并移入回收站
24 + /tmp/delete-vm -recycle-bin -vm $VM_NAME || true
25 +
26 + # 脚本执行完以后,删除本脚本
27 + rm -f "$0"

uk revised this gist 9 months ago. Go to revision

No changes

uk revised this gist 9 months ago. Go to revision

1 file changed, 202 insertions

install-rpm.sh(file created)

@@ -0,0 +1,202 @@
1 + #!/bin/bash
2 +
3 + # 定义安装命令的函数,接收 user 和 repo 作为参数
4 + case "$(uname -m)" in
5 + x86_64)
6 + arch="amd64"
7 + ;;
8 + aarch64)
9 + arch="arm64"
10 + ;;
11 + *)
12 + echo "Unsupported architecture: $(uname -m)"
13 + exit 1
14 + ;;
15 + esac
16 +
17 + if [ "$2" = "-U" ]; then
18 + case "$1" in
19 + "helm" | "k9s" | "govc" | "nerdctl" | "fzf" | "terraform" | "packer" )
20 + rm -rf /usr/local/bin/"$1" "${fpath[0]}"/_"$1" /etc/bash_completion.d/"$1"
21 + echo
22 + echo "-------------------------------------------"
23 + echo "$1 installation complete!"
24 + echo
25 + echo "-------------------------------------------"
26 + echo
27 + ;;
28 + "trzsz" )
29 + rm -rf /usr/local/bin/"trzsz" /usr/local/bin/"trz" /usr/local/bin/"tsz" "${fpath[0]}"/_"$1" /etc/bash_completion.d/"trzsz"
30 + echo
31 + echo "-------------------------------------------"
32 + echo "$1 installation complete!"
33 + echo
34 + echo "-------------------------------------------"
35 + echo
36 + ;;
37 + *)
38 + echo "Unsupported package: $1"
39 + exit 1
40 + ;;
41 + esac
42 + exit 0
43 + else
44 + case "$1" in
45 + "helm")
46 + # helm
47 + echo
48 + echo "Installing helm..."
49 + version=$(curl -s https://get.helm.sh/helm-latest-version)
50 + curl -s -L -o - "https://get.helm.sh/helm-${version}-linux-${arch}.tar.gz" | tar --strip-components=1 -C /usr/local/bin -xzf - linux-amd64/helm
51 + helm completion zsh > "${fpath[1]}/_helm" || true
52 + helm completion bash > /etc/bash_completion.d/helm
53 + # Displaying post-installation instructions
54 + echo
55 + echo "-------------------------------------------"
56 + echo "helm installation complete!"
57 + echo
58 + # Displaying version
59 + helm version
60 + echo
61 + echo "-------------------------------------------"
62 + echo
63 + ;;
64 + "k9s")
65 + # derailed k9s
66 + echo
67 + echo "Installing k9s..."
68 + curl -s -L -o - "https://github.com/derailed/k9s/releases/latest/download/k9s_Linux_${arch}.tar.gz" | tar -C /usr/local/bin -xzf - k9s
69 + # Displaying post-installation instructions
70 + echo
71 + echo "-------------------------------------------"
72 + echo "k9s installation complete!"
73 + echo
74 + # Displaying version
75 + k9s version
76 + echo
77 + echo "-------------------------------------------"
78 + echo
79 + ;;
80 + "govc")
81 + # vmware govmomi
82 + echo
83 + echo "Installing govmomi..."
84 + curl -s -L -o - "https://github.com/vmware/govmomi/releases/latest/download/govc_$(uname -s)_$(uname -m).tar.gz" | tar -C /usr/local/bin -xvzf - govc
85 + # Displaying post-installation instructions
86 + echo
87 + echo "-------------------------------------------"
88 + echo "nerdctl installation complete!"
89 + echo
90 + # Displaying version
91 + govc version
92 + echo
93 + echo "To initialize the environment, please run:"
94 + echo " export GOVC_URL=\"https://administrator@vsphere.local:password@vcip\""
95 + echo " export GOVC_INSECURE=true"
96 + echo "-------------------------------------------"
97 + echo
98 + ;;
99 + "nerdctl")
100 + # vmware nerdctl
101 + echo
102 + echo "Installing nerdctl..."
103 + VERSION=$(curl -s https://api.github.com/repos/containerd/nerdctl/releases/latest | jq -r '.tag_name' | awk -F"v" '{print $NF}')
104 + curl -s -L -o - "https://github.com/containerd/nerdctl/releases/latest/download/nerdctl-${VERSION}-linux-${arch}.tar.gz" | tar -C /usr/local/bin -xvzf - nerdctl
105 + nerdctl completion zsh > "${fpath[1]}/_nerdctl" || true
106 + nerdctl completion bash > /etc/bash_completion.d/nerdctl
107 + # Displaying post-installation instructions
108 + echo
109 + echo "-------------------------------------------"
110 + echo "nerdctl installation complete!"
111 + echo
112 + # Displaying version
113 + nerdctl version
114 + echo
115 + echo "-------------------------------------------"
116 + echo
117 + ;;
118 + "fzf")
119 + # fzf
120 + echo
121 + echo "Installing fzf..."
122 + VERSION=$(curl -s https://api.github.com/repos/junegunn/fzf/releases/latest | jq -r '.tag_name' | awk -F"v" '{print $NF}')
123 + curl -s -L -o - "https://github.com/junegunn/fzf/releases/latest/download/fzf-${VERSION}-linux_${arch}.tar.gz" | tar -C /usr/local/bin -xvzf - fzf
124 + fzf --zsh > "${fpath[1]}/_fzf" || true
125 + fzf --bash > /etc/bash_completion.d/fzf
126 + # Displaying post-installation instructions
127 + echo
128 + echo "-------------------------------------------"
129 + echo "fzf installation complete!"
130 + echo
131 + # Displaying version
132 + fzf --version
133 + echo
134 + echo "-------------------------------------------"
135 + echo
136 + ;;
137 + "terraform")
138 + # terraform
139 + echo
140 + echo "Installing Terraform..."
141 + # Fetching the latest version of Terraform
142 + VERSION=$(curl -s https://checkpoint-api.hashicorp.com/v1/check/terraform | jq -r -M '.current_version')
143 + curl -s -L -o "terraform_${VERSION}_linux_${arch}.zip" "https://releases.hashicorp.com/terraform/${VERSION}/terraform_${VERSION}_linux_${arch}.zip"
144 + # Unzipping and installing Terraform
145 + unzip -qq -o "terraform_${VERSION}_linux_${arch}.zip" terraform -d /usr/local/bin && rm -f "terraform_${VERSION}_linux_${arch}.zip"
146 + # Displaying post-installation instructions
147 + echo
148 + echo "-------------------------------------------"
149 + echo "Terraform installation complete!"
150 + echo
151 + # Displaying terraform version
152 + terraform --version
153 + echo
154 + echo "To enable CLI auto-completion, please run:"
155 + echo " terraform -install-autocomplete"
156 + echo "-------------------------------------------"
157 + echo
158 + ;;
159 + "packer")
160 + # packer
161 + echo
162 + echo "Installing Packer..."
163 + # Fetching the latest version of packer
164 + VERSION=$(curl -s https://checkpoint-api.hashicorp.com/v1/check/packer | jq -r -M '.current_version')
165 + curl -s -L -o "packer_${VERSION}_linux_${arch}.zip" "https://releases.hashicorp.com/packer/${VERSION}/packer_${VERSION}_linux_${arch}.zip"
166 + # Unzipping and installing packer
167 + unzip -qq -o "packer_${VERSION}_linux_${arch}.zip" packer -d /usr/local/bin && rm -rf "packer_${VERSION}_linux_${arch}.zip" /usr/sbin/packer
168 + # Displaying post-installation instructions
169 + echo
170 + echo "-------------------------------------------"
171 + echo "Packer installation complete!"
172 + echo
173 + # Displaying packer version
174 + packer --version
175 + echo
176 + echo "To enable CLI auto-completion, please run:"
177 + echo " packer -autocomplete-install"
178 + echo "-------------------------------------------"
179 + echo
180 + ;;
181 + "trzsz")
182 + # trzsz
183 + echo
184 + echo "Installing trzsz..."
185 + curl -s -L -o - "https://github.com/trzsz/trzsz-go/releases/download/v1.1.8/trzsz_1.1.8_linux_$(uname -m).tar.gz" | tar --strip-components=1 -C /usr/local/bin -xvzf -
186 + # Displaying post-installation instructions
187 + echo
188 + echo "-------------------------------------------"
189 + echo "trzsz installation complete!"
190 + echo
191 + # Displaying version
192 + /usr/local/bin/trzsz version
193 + echo
194 + ;;
195 + *)
196 + echo
197 + echo "helm k9s govc nerdctl fzf terraform packer trzsz"
198 + exit 1
199 + ;;
200 + esac
201 + exit 0
202 + fi

uk revised this gist 10 months ago. Go to revision

1 file changed, 33 insertions

install_ohmyzsh.sh(file created)

@@ -0,0 +1,33 @@
1 + #!/bin/bash
2 +
3 + yum install git zsh bash-completion wget unzip tree tmux vim sysstat -y -q &> /dev/null || true
4 +
5 + # install oh-my-zsh
6 + git clone https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git
7 + REMOTE=https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git sh ohmyzsh/tools/install.sh && rm -rf ohmyzsh
8 +
9 + ZSH=$HOME/.oh-my-zsh
10 + # install zsh-syntax-highlighting
11 + # git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
12 + git clone https://mirrors.nju.edu.cn/git/zsh-syntax-highlighting.git $ZSH/custom/plugins/zsh-syntax-highlighting
13 + # echo "source $ZSH_CUSTOM/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc
14 +
15 + # install zsh-autosuggestions
16 + # git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
17 + git clone https://mirrors.nju.edu.cn/git/zsh-autosuggestions.git $ZSH/custom/plugins/zsh-autosuggestions
18 + # echo "source $ZSH_CUSTOM/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc
19 +
20 + # replace plugins and theme
21 + cp $HOME/.zshrc $HOME/.zshrc.bak
22 + zsh -c 'source ~/.zshrc && omz plugin enable zsh-autosuggestions zsh-syntax-highlighting sudo'
23 + zsh -c 'source ~/.zshrc && omz theme set ys'
24 + # sed -i 's/(git/(git zsh-syntax-highlighting zsh-autosuggestions sudo/g' ~/.zshrc
25 + # sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="ys"/g' ~/.zshrc
26 +
27 + cat >> ~/.zshrc <<UK
28 +
29 + ## add
30 + zstyle ':omz:update' mode disabled
31 + HIST_STAMPS="yyyy-mm-dd"
32 + alias vi="vim"
33 + UK
Newer Older