# ESXI
【系统相关】
获取esxi版本
vmware -v
esxcli system version get
查看系统时间
esxcli system time get
e.g.
esxcli system time set <options>
修改系统时间,例子:
Cmd options:
-d|--day=<long> Day
-H|--hour=<long> Hour
-m|--min=<long> Minute
-M|--month=<long> Month
-s|--sec=<long> Second
-y|--year=<long> Year
[root@localhost:~] esxcli system time set -y=2020 -M=6 -d=29 -H=14 -m=16
esxcli system – 通过该命令使你能够控制ESXi的高级选项,比如设置syslog并管理主机状态。
# 查看是否为维护模式
esxcli system maintenanceMode get
esxcli system maintenanceMode set --enable true/false # ESXi主机进入/退出,维护模式
# 系统重启/关机(必须处于维护模式,否则命令不生效)
esxcli system shutdown reboot/poweroff
# 查看所有虚拟机姓名和Vmid
vim-cmd vmsvc/getallvms
【网络相关】
# 查看网卡状态
esxcfg-vmknic -l
# 查看服务器自身IP地址
esxcli network ip interface ipv4 get
# 获取所有虚拟机名字和IP地址
for item in `vim-cmd vmsvc/getallvms |grep -v Vmid| awk '{print $1}'`;do vim-cmd vmsvc/get.summary $item | grep -E "ipAddress|hostName";done
# 查宿主机下每个对应的mac
net-stats -l
# 查看路由表
esxcli network ip route ipv4 list
# 查看ESXi主机网卡列表(nic)或up-link列表
esxcli network nic list
# 关闭/打开vmnic1接口
esxcli network nic down/up -n=vmnic1
esxcli network –需要监控vSphere网络并对如下网络组件进行调整时,包括虚拟交换机、VMkernel网络接口、防火墙以及物理网卡等
【防火墙相关】--2020.7.30更新
esxcli network firewall
# 已经开启的服务
esxcli network firewall ruleset list | grep "true"
# 防火墙允许的IP地址
esxcli network firewall ruleset allowedip list
# 批量授权某个IP访问开启的所有服务
for item in `esxcli network firewall ruleset list |grep "true"|awk '{print $1}'`;do esxcli network firewall ruleset allowedip add --ip-address "192.168.x.x" --ruleset-id "$item";done;esxcli network firewall ruleset allowedip list
【硬件相关】
# 获取ESXi主机的硬件及配置信息
esxcli hardware
esxcli hardware cpu list – 获取CPU信息(系列、型号以及缓存)
esxcli hardware memory get – 获取内存信息(可用内存以及非一致内存访问)
# 查看磁盘列表
esxcli storage – 可能是最常用的esxcli命令命名空间之一,包括了管理连接到vSphere的存储的所有信息。
esxcli storage core device list – 列出当前存储设备
esxcli storage core device vaai status get –获得存储设备支持的VAAI的当前状态。
【服务相关】
# 重启所有的服务
services.sh restart
【软件相关】
esxcli software – 软件命名空间可以用于检索ESXi主机已安装的软件及驱动并可以安装新组件。
esxcli software vib list – 列出ESXi主机上已经安装的软件及驱动。
【脚本相关】
计划任务路径:
cat /var/spool/cron/crontabs/root
# 获取虚拟机列表
vim-cmd vmsvc/getallvms
获取vm状态
vim-cmd vmsvc/power.getstat [vmid]
关闭虚机
vim-cmd vmsvc/power.shutdown [vmid]
vim-cmd vmsvc/power.off [vmid] # 强制关闭
长期脚本存放路径
vi /etc/rc.local.d/local.sh # 内容写在exit 0 之前
# Esxi 开机脚本
#/bin/bash # author:jerry # create date:2017-8-29 # last update:2018-7-30 status=`vim-cmd /hostsvc/hostsummary | grep inMaintenanceMode|cut -c 27` [ $status == "t" ] && vim-cmd hostsvc/maintenance_mode_exit 1&> /dev/null for on in `vim-cmd vmsvc/getallvms |awk '{print $1}'|tail -n 12` do if [ $on -eq 11 ] then continue else vim-cmd vmsvc/power.on $on sleep 30 fi done
# Esxi 关机脚本
#!/bin/sh # author:jerry # create date:2017-7-27 # last update:2018-7-30 off=`esxcli vm process list|grep World |awk '{print $3}'|wc -l` status=`vim-cmd /hostsvc/hostsummary | grep inMaintenanceMode|cut -c 27` if [ $off == 0 ] ;then [ $status == "f" ] && vim-cmd hostsvc/maintenance_mode_enter 1&> /dev/null && sleep 10 && halt || halt else hostsum=`vim-cmd vmsvc/getallvms|awk 'NR>1{print $1}'|wc -l` vim-cmd vmsvc/getallvms|awk 'NR>1{print $1}'>tmp.txt for i in `seq 1 $hostsum` do vid=`sed -n "$i p" ./tmp.txt` on=`vim-cmd vmsvc/power.getstate $vid |tail -1|awk '{print $2}' 2&>/dev/null` if [ $on == on ] ;then vim-cmd vmsvc/power.shutdown $vid 1&>/dev/null sleep 5 fi done rm -rf ./tmp.txt off=`esxcli vm process list|grep World|awk '{print $3}'|wc -l` if [ $off == 0 ] ;then vim-cmd hostsvc/maintenance_mode_enter 1&> /dev/null sleep 10 halt else ps |grep vmx|awk '{print $2}' |uniq >tmp.txt on=`ps |grep vmx|awk '{print $2}' |uniq |wc -l` for i in `seq 1 $on` do hostid=`sed -n " $i p " ./tmp.txt` kill $hostid 1&> /dev/null done rm -rf ./tmp.txt vim-cmd hostsvc/maintenance_mode_enter 1&> /dev/null sleep 10 halt fi fi
参考链接: