Naposledy aktivní 6 months ago

Revize 549e5c8057476e6539f8477bb6473a1ff76c249e

install-rpm.sh Raw
1#!/bin/bash
2
3# 定义安装命令的函数,接收 user 和 repo 作为参数
4case "$(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 ;;
15esac
16
17if [ "$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
43else
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
202fi
install_ohmyzsh.sh Raw
1#!/bin/bash
2
3# check sudo
4if command -v sudo &>/dev/null; then
5 SUDO=sudo
6else
7 SUDO=""
8fi
9
10# install package
11if command -v yum &>/dev/null; then
12 $SUDO yum install -y -q git zsh bash-completion wget unzip tree tmux vim sysstat &> /dev/null
13elif command -v apt &>/dev/null; then
14 $SUDO apt update -qq &>/dev/null
15 $SUDO apt install -y git zsh bash-completion wget unzip tree tmux vim sysstat &> /dev/null
16else
17 echo "[ERROR] unsupport os" >&2
18 exit 1
19fi
20
21# install oh-my-zsh
22git clone https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git
23REMOTE=https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git sh ohmyzsh/tools/install.sh && rm -rf ohmyzsh
24
25ZSH=$HOME/.oh-my-zsh
26# install zsh-syntax-highlighting
27# git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
28git clone https://mirrors.nju.edu.cn/git/zsh-syntax-highlighting.git $ZSH/custom/plugins/zsh-syntax-highlighting
29# echo "source $ZSH_CUSTOM/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc
30
31# install zsh-autosuggestions
32# git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
33git clone https://mirrors.nju.edu.cn/git/zsh-autosuggestions.git $ZSH/custom/plugins/zsh-autosuggestions
34# echo "source $ZSH_CUSTOM/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc
35
36# replace plugins and theme
37cp $HOME/.zshrc $HOME/.zshrc.bak
38zsh -c 'source ~/.zshrc && omz plugin enable zsh-autosuggestions zsh-syntax-highlighting sudo'
39zsh -c 'source ~/.zshrc && omz theme set ys'
40# sed -i 's/(git/(git zsh-syntax-highlighting zsh-autosuggestions sudo/g' ~/.zshrc
41# sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="ys"/g' ~/.zshrc
42
43cat >> ~/.zshrc <<UK
44
45## add
46zstyle ':omz:update' mode disabled
47HIST_STAMPS="yyyy-mm-dd"
48alias vi="vim"
49UK
install_vmtools.sh Raw
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. 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."
packer_rename-no-mf.sh Raw
1#!/bin/bash
2
3set -o errexit
4set -o nounset
5set -o pipefail
6
7VM_NEW_NAME=$1
8
9# 提取当前OVF文件名
10VM_NOW_NAME=$(basename *.ovf | awk -F '.ovf' '{print $1}')
11
12# 重命名OVF文件和VMDK文件
13mv "$VM_NOW_NAME".ovf "$VM_NEW_NAME".ovf
14mv "$VM_NOW_NAME"-1.vmdk "$VM_NEW_NAME".vmdk
15
16# 在OVF文件中替换名称
17sed -i "s/$VM_NOW_NAME/$VM_NEW_NAME/g" "$VM_NEW_NAME".ovf
18sed -i "s/${VM_NEW_NAME}-1/$VM_NEW_NAME/g" "$VM_NEW_NAME".ovf
19
20echo "#### PACKER_COMPLETE ####"
21
22# 脚本执行完以后,删除本脚本
23rm -f "$0"
packer_rename.sh Raw
1#!/bin/bash
2
3set -o errexit
4set -o nounset
5set -o pipefail
6
7VM_NEW_NAME=$1
8
9# 提取当前OVF文件名
10VM_NOW_NAME=$(basename *.ovf | awk -F '.ovf' '{print $1}')
11
12# 重命名OVF文件和VMDK文件
13mv "$VM_NOW_NAME".ovf "$VM_NEW_NAME".ovf
14mv "$VM_NOW_NAME"-1.vmdk "$VM_NEW_NAME".vmdk
15
16# 在OVF文件中替换名称
17sed -i "s/$VM_NOW_NAME/$VM_NEW_NAME/g" "$VM_NEW_NAME".ovf
18sed -i "s/${VM_NEW_NAME}-1/$VM_NEW_NAME/g" "$VM_NEW_NAME".ovf
19
20# 增加 mf 文件
21openssl sha256 "$VM_NEW_NAME".vmdk "$VM_NEW_NAME".ovf > "$VM_NEW_NAME".mf
22
23# 导出成 OVA
24tar -cf "$VM_NEW_NAME".ova "$VM_NEW_NAME".ovf "$VM_NEW_NAME".vmdk "$VM_NEW_NAME".mf
25
26echo "#### PACKER_COMPLETE ####"
27
28# 脚本执行完以后,删除本脚本
29rm -f "$0"
snippetfile1.txt Raw
1#!/bin/bash
2
3set -o errexit
4set -o nounset
5set -o pipefail
6
7VM_NEW_NAME=$1
8
9# 进入 WORKDIR
10cd assets
11
12# 提取当前OVF文件名
13VM_NOW_NAME=$(basename packer-*.ovf | awk -F. '{print $1}')
14
15# 重命名OVF文件和VMDK文件
16mv "$VM_NOW_NAME".ovf "$VM_NEW_NAME".ovf
17mv "$VM_NOW_NAME"-1.vmdk "$VM_NEW_NAME"-1.vmdk
18
19# 在OVF文件中替换名称
20sed -i "s/$VM_NOW_NAME/$VM_NEW_NAME/g" "$VM_NEW_NAME".ovf
21
22# 导出成 OVA
23tar -cf "$VM_NEW_NAME".ova "$VM_NEW_NAME".ovf "$VM_NEW_NAME"-1.vmdk
24
25echo "#### PACKER_COMPLETE ####"
tower_shutdown_delete-old-vm.sh Raw
1#!/bin/bash
2
3set -o errexit
4set -o nounset
5set -o pipefail
6
7export TOWER_HOST=$TOWER_HOST
8export TOWER_USERNAME=$TOWER_USERNAME
9export TOWER_PASSWORD=$TOWER_PASSWORD
10export VM_NAME=$VM_NAME
11export TOWER_SOURCE=LOCAL
12
13env
14
15# 下载二进制命令并授予执行权限
16wget -O /tmp/shutdown-vm http://192.168.48.2/Software/bin/tower/shutdown-vm-alpine
17wget -O /tmp/delete-vm http://192.168.48.2/Software/bin/tower/delete-vm-alpine
18chmod +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# 脚本执行完以后,删除本脚本
27rm -f "$0"