vim-cmd 명령 을 사용하여 ESXi 호스트에서 전원이 켜진 모든 VMware 게스트를 나열하는 샘플 Shell Script를 소개합니다.
샘플 Shell Script
아래 스크립트를 .sh확장자 로 powerstate.sh 저장한 다음 chmod +x powerstate.sh 명령으로 실행 모드로 변경합니다. ./script_name.sh 명령으로 스크립트를 실행하여 ESXi 호스트에서 모든 VMware 게스트의 전원 상태를 확인합니다.
#!/bin/sh
# 호스트의 모든 가상 머신 목록 가져오기
vmids=`vim-cmd vmsvc/getallvms 2>&1 | sed '1,2d'| awk '{print $1}'`
# 각 가상 머신의 전원 상태를 확인합니다.
for vmid in $vmids; do
if [ $vmid -gt 0 ]; then
state=`vim-cmd vmsvc/power.getstate $vm | grep "Powered" | awk -F " " '{print $2}'`
vm_name=`vim-cmd vmsvc/get.config $vm | grep "name =" | head -n 1 | awk -F "=" '{print $2}'`
if [ "$state" = "on" ]; then
echo "$vmid is $state $vm_name"
else
echo "$vmid is $state $vm_name"
fi
fi
done
실행 결과는 다음과 같습니다.
# ./script_name.sh
1 is off "Windows Server 2012 R2",
2 is on "Ubuntu Server 20.04 LTS",
사용 vim-cmd 옵션 설명
이 글에서 필요한 가상 머신의 정보를 취득하기위해 vim-cmd유틸리티를 사용합니다. vim-cmd 유틸리티는 VMware 환경을 관리하기 위한 명령줄 인터페이스입니다. 샘플 Shell Script에서 사용하는 명령은 다음과 같습니다.
vmsvc/getallvms
ESXi 호스트에 등록된 모든 가상 머신 목록을 검색하는 데 사용됩니다. 출력 예는 다음과 같습니다.
# vim-cmd vmsvc/getallvms
Vmid Name File
1 Windows Server 2012 R2 [datastore1] WinSrv2012R2/WinSrv2012R2.vmx
2 Ubuntu Server 20.04 LTS [datastore1] UbtSrv20.04L/UbtSrv20.04L.vmx
위 샘플 Shell Script에서는 Vmid 숫자 나열이 $vmids변수에 대입되어 사용됩니다.
vmsvc/power.getstate
ESXi 호스트에 등록된 가상 머신의 전원 상태를 검색하는 데 사용됩니다. 출력 예는 다음과 같습니다.
# vim-cmd vmsvc/power.getstate 1
Retrieved runtime info
Powered off
# vim-cmd vmsvc/power.getstate 2
Retrieved runtime info
Powered on
위 샘플 Shell Script에서는on 또는 off가 $state변수에 대입되어 사용됩니다.
vmsvc/get.config
ESXi 호스트에 등록된 가상 머신의 구성에 대한 정보를 검색하는 데 사용됩니다. 출력 예는 다음과 같습니다.
# vim-cmd vmsvc/get.config 1
Configuration:
(vim.vm.ConfigInfo) {
dynamicType = <unset>,
changeVersion = "2022-10-16T23:33:13.790985Z",
modified = "1970-01-01T00:00:00Z",
name = "Windows Server 2012 R2",
guestFullName = "Microsoft Windows Server 2012 R2 (64-bit)",
version = "vmx-08",
... 이하 생략 ...
위 샘플 Shell Script에서는“Windows Server 2012 R2”,가 $vm_name변수에 대입되어 사용됩니다.
댓글