Lister alle vm-er på en eller flere ESX-servere
#! /bin/bash # # Return all virtual machines on ESXi-servers, $esx_servers # Run as root, and make shure that root can log in on $esx_servers # without password. # https://kb.vmware.com/s/article/1002866 # http://www.linuxproblem.org/art_9.html # # hans@sandsdalen.net esx_servers="esx1 esx2" # test #esx_servers="esx1" name_start_pos=7 function list-vms # will list vms commaseparated # format: paa linje # <vmid> <name> <File> <Guest OS> <Version> <Annotation> # - File has format "[xxx] filnavn" # - name starts in position $name_start_pos + 1 # # Annotation is not shown { esxi_server=$1 lines=$(ssh $esxi_server vim-cmd vmsvc/getallvms) echo "$lines" | while read -r line do # Line must start with a number if [[ $line =~ ^[0-9] ]]; then # printf "$line\n" # remove everything after [ l1=${line%%[*} # vmid is first word vmid=${l1%% *} # name is the rest of $l1 name=${l1:$name_start_pos} # remove blanks name=${name%% *} # set $file to $line except from $l1 (see above) file=${line#$l1} file=${file/.vmx */.vmx} # Guest OS guest_os1=${line/*.vmx/} # remove blanks guest_os=$(echo $guest_os1 | cut -f1 -d" ") # Version version=$(echo $guest_os1 | cut -f2 -d" ") echo "$esxi_server","$vmid,\"$name\",\"$file\",\"$guest_os\",\"$version\"" fi done } for server in $esx_servers do list-vms $server done
Se også