Skip to content

Instantly share code, notes, and snippets.

@pd12bbf7608ae1
Created August 5, 2020 02:43
Show Gist options
  • Save pd12bbf7608ae1/983ae1372127eac266260cb6049c75a5 to your computer and use it in GitHub Desktop.
Save pd12bbf7608ae1/983ae1372127eac266260cb6049c75a5 to your computer and use it in GitHub Desktop.
ESXi远程自动化升级
#!/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