وقتی رابط وب در دسترس نیست، یا میخواهید کاری را روی چند ماشین اسکریپت کنید، vim-cmd همان کارهای Host Client را از SSH انجام میدهد.
۱. فهرست و وضعیت
vim-cmd vmsvc/getallvms
vim-cmd vmsvc/power.getstate 12
vim-cmd vmsvc/get.summary 12 | grep -E 'name|powerState|ipAddress|toolsStatus'عدد اول هر سطر خروجی getallvms شناسهی ماشین (Vmid) است و بقیهی دستورها با همین شناسه کار میکنند.
۲. روشن و خاموش کردن
vim-cmd vmsvc/power.on 12
vim-cmd vmsvc/power.shutdown 12 # graceful, needs VMware Tools
vim-cmd vmsvc/power.off 12 # hard power off
vim-cmd vmsvc/power.reboot 12خاموش کردن مرتب همهی ماشینهای روشن پیش از نگهداری میزبان:
for id in $(vim-cmd vmsvc/getallvms | awk 'NR>1 {print $1}'); do
vim-cmd vmsvc/power.getstate "$id" | grep -q 'Powered on' && vim-cmd vmsvc/power.shutdown "$id"
done۳. snapshot
# snapshot.create <vmid> <name> <description> <includeMemory> <quiesce>
vim-cmd vmsvc/snapshot.create 12 before-patch "before monthly patch" 0 1
vim-cmd vmsvc/snapshot.get 12
vim-cmd vmsvc/snapshot.removeall 12snapshot جایگزین بکاپ نیست. snapshot قدیمی فایل delta را بزرگ میکند و کارایی دیسک را پایین میآورد. بعد از پایان کار حذفش کنید.
۴. کپی دیسک و ساخت ماشین از قالب
cd /vmfs/volumes/datastore1
mkdir web02
vmkfstools -i template-rocky9/template-rocky9.vmdk web02/web02.vmdk -d thin
cp template-rocky9/template-rocky9.vmx web02/web02.vmx
sed -i 's/template-rocky9/web02/g' web02/web02.vmx
sed -i '/^ethernet0.generatedAddress/d; /^uuid.bios/d; /^uuid.location/d' web02/web02.vmx
vim-cmd solo/registervm /vmfs/volumes/datastore1/web02/web02.vmxبرای کپی دیسک فقط از vmkfstools استفاده کنید، نه cp. با حذف خطوط MAC و UUID، ESXi برای ماشین جدید مقدار تازه میسازد. در اولین روشن شدن اگر پرسید «moved or copied؟» گزینهی I copied it را انتخاب کنید.
۵. خارج کردن از فهرست
vim-cmd vmsvc/unregister 12این دستور فایلها را پاک نمیکند. ماشین فقط از فهرست میزبان خارج میشود و با registervm دوباره برمیگردد.