xe vm-list | \ awk '{if ( $0 ~ /uuid/) {uuid=$5} if ($0 ~ /name-label/) \ {$1=$2=$3="";vmname=$0; printf "%s - %s\n", vmname, uuid}}'
The script first save the fifth column from a line having uuid string in it into the variable uuid. Next it saves all columns, after the third one, from line having name-label into variable vmname. Finally it prints both variables.
The exemplary output:
ukweb2 - fbca0851-35de-2963-bf0c-7980f3c0d96f nagios - b741def2-14cc-def4-f8ba-ff0d3ed741d9 ukmail1 - 343c8f93-e4db-d0df-bc30-7544fcd6f14e jira - ecc3241f-ac14-0398-4e44-ba96cd1d51d2 dodb-02 - 7f223172-e43e-a200-6dc6-b108ce4f9166 RTST-Witness Server - 3c236b0a-209f-6ac9-6d46-b14f7678bfa6 hub-01 - 60ef767c-9b87-edf8-9f13-af2185e656cd ukweb1 - 6e0e4622-ddfe-0db8-a128-f432e05565cb dns2 - d65e40d4-ea21-1cbf-cc86-9f522f5e04ef ixchariot - 73f78129-86db-fd9f-81b4-85768eeee487
We can modify our command to prepare a list of all host with vms bind to them. This time we use xe vm-list with params=all option. The scripts searches for lines with the name-label and saves a name (third column). Next it looks for lines with the word affinity and a uuid (we know that UUID have to start from a hexadecimal number) and prints a saved name.
xe vm-list params=all| \ awk '{if ( $0 ~ /name-label/) {$1=$2=$3=""; vmname=$0} \ if ($0 ~ /affinity.*\:\ [a-e,0-9]/) {host=$4; printf "%s \n", vmname}}'
The output might looks similar to:
Control domain on host: p1-m4 Control domain on host: p1-m2 dodb-02 ukweb5 Control domain on host: p1-m3 Control domain on host: p1-m1
You might wonder why the list is so short, but we have the list of machine enforce to start from a given host (affinity to a given UUID). If you have machine on share storage allowed to flow between machine you should get very short list indeed.
3 comments:
Just a small cosmetic change which makes list of VM much easier to read, IMHO:
xe vm-list | awk '{if ( $0 ~ /uuid/) {uuid=$5} if ($0 ~ /name-label/) {$1=$2=$3="";vmname=$0; printf "%45s - %s\n", vmname, uuid}}'
radek.
Hi,
It could be very usefull for user without knoledge in linux (who only use XenCenter) to know which vm is the owner of a specified vhd.
Example: I go to my CIFS storage with has an specified UUID (folder name 364fd4...) inside this folder there are lots of VHD files which are de disk of VMs (with UUID's names of files). I order files by size and I would like to know which VMs are the owners of the biggest files. How could I make it?
:D
Regards
Hi,
It could be very usefull for user without knoledge in linux (who only use XenCenter) to know which vm is the owner of a specified vhd.
Example: I go to my CIFS storage with has an specified UUID (folder name 364fd4...) inside this folder there are lots of VHD files which are de disk of VMs (with UUID's names of files). I order files by size and I would like to know which VMs are the owners of the biggest files. How could I make it?
:D
Regards
Post a Comment