Created
August 5, 2020 02:43
-
-
Save pd12bbf7608ae1/983ae1372127eac266260cb6049c75a5 to your computer and use it in GitHub Desktop.
ESXi远程自动化升级
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
## 检测ESXi版本 升级ESXi一体化 | |
## -h 显示帮助信息 | |
## -v 显示ESXi版本 | |
## -u 升级,后接包路径 | |
## 参数列表 | |
ESXiServer="10.10.10.10" ## ESXi主机地址(ip或者域名) | |
ESXiPort="22" ## 默认端口 | |
user="root" ## 登录用户名 | |
keyPath="$HOME/.ssh/id_esxi" ## ssh私钥存放位置 ESXi接受RSA秘钥 公钥存放位置在 /etc/ssh/keys-(用户名)/authorized_keys | |
ESXiPath="/vmfs/volumes/datastore1/patchs" ## ESXi上存放patchs的文件夹,手动创建 | |
help() { | |
echo "检测ESXi版本 升级ESXi一体化" | |
echo "脚本需要预先配置参数" | |
echo "-h 显示帮助信息" | |
echo "-v 显示ESXi版本" | |
echo "-u 升级,后接更新包路径" | |
echo "-r 重启,可与升级(-u)一起使用" | |
} | |
version() { | |
ssh -i "$keyPath" -p "$ESXiPort" "$user"@"$ESXiServer" "esxcli system version get" | |
} | |
copyPackage() { | |
scp -i "$keyPath" -P "$ESXiPort" "$updatePath" "$user"@"$ESXiServer":"$ESXiPath" | |
} | |
ESXiUpgrade() { | |
ssh -i "$keyPath" -p "$ESXiPort" "$user"@"$ESXiServer" "esxcli software vib update -d ${ESXiPath}/$(basename "$updatePath")" | |
} | |
deletePackage() { | |
ssh -i "$keyPath" -p "$ESXiPort" "$user"@"$ESXiServer" "rm ${ESXiPath}/$(basename "$updatePath") -f" | |
} | |
ESXiReboot() { | |
ssh -i "$keyPath" -p "$ESXiPort" "$user"@"$ESXiServer" "reboot" | |
} | |
while getopts "hvu:r" opt | |
do | |
bool=1 | |
case $opt in | |
h) | |
echo "[$(date "+%Y-%m-%d %H:%M:%S")] 显示帮助信息" | |
help | |
exit 0 | |
;; | |
v) | |
echo "[$(date "+%Y-%m-%d %H:%M:%S")] 显示ESXi版本..." | |
version | |
exit 0 | |
;; | |
u) | |
echo "[$(date "+%Y-%m-%d %H:%M:%S")] 升级ESXi 升级包路径 $OPTARG" | |
updatePath="$OPTARG" | |
;; | |
r) | |
rebootFlag=1 | |
;; | |
?) | |
echo "未知参数" | |
help | |
exit 0 | |
;; | |
esac | |
done | |
if [ -z "$bool" ]; then | |
echo "[$(date "+%Y-%m-%d %H:%M:%S")] 显示帮助信息" | |
help | |
exit 0 | |
fi | |
if [ -r "$updatePath" ]; then | |
echo "[$(date "+%Y-%m-%d %H:%M:%S")] 上传升级包..." | |
copyPackage | |
echo "[$(date "+%Y-%m-%d %H:%M:%S")] 开始升级..." | |
ESXiUpgrade | |
echo "[$(date "+%Y-%m-%d %H:%M:%S")] 升级完成,删除升级包..." | |
deletePackage | |
fi | |
if [ -n "$rebootFlag" ]; then #进行重启 | |
echo "[$(date "+%Y-%m-%d %H:%M:%S")] 系统重启..." | |
ESXiReboot | |
exit 0 | |
fi | |
echo "[$(date "+%Y-%m-%d %H:%M:%S")] 系统可能需要重启,使用 -r 参数进行重启" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment