Я смотрел на этот вопрос, который задавал что-то похожее на помощь, и это самое близкое, что я мог найти, чтобы помочь, но это не решает мою проблему: экспорт снимка XenServer в виде файла через консоль
Что мне конкретно нужно, так это сделать так, чтобы в скрипте через что-то вроде curl или sed извлекался только сам UUID из информации списка снимков и сохранялся в качестве переменной в скрипте (у нас будет только один на машину в любое время, но любой ответ, масштабируемый для охвата нескольких UUID, также будет более чем приемлемым).
Проще говоря, мне нужен только Сам UUID для хранения в качестве переменной в сценарии .sh из этого вывода или любого другого вывода, имеющего UUID:
uuid ( RO) : 30820e58-886e-972e-8435-c5cf83140446
name-label ( RW): xgdc00-7-20
name-description ( RW):
is-vmss-snapshot ( RO): false
Это в основном понадобится на серверах с Xenserver 7.0 или, возможно, немного новее, я определенно буду признателен за помощь по это, поскольку я не могу найти способ сделать это правильно, поскольку UUID изменяется для снимков, чтобы я мог поместить переменную в эту команду или команду, подобную этой, в скрипт:
xe vm-export vm=SNAPSHOT_UUID filename=/mnt/anything
Я еще немного поохотился в Интернете и нашел сценарий в сообщении для обсуждения на форумах Citrix, в котором есть сценарий, который делает именно то, что мне нужно: https: // обсуждения .citrix.com / topic / 345960-xenserver-automatic-snapshots-script /
Вот сам сценарий, который, как я могу проверить, работает у меня на XenServer 7.0, все, что вам нужно сделать, это указать UUID виртуальной машины и путь экспорта в config:
#!/bin/bash
# [usage & Config]
# put this script on Xenserver master and execute with root privilege
# Change VM UUID(s) and the location to export
# Configs:
# VMs: a list of VM uuid, separated by comma
# ExportPath: the mount path to store exported xva file
#
# [How it work]
# step1: iterate specified VM UUID(s) and create a snapshot for each
# step2: backup the snapshots to specified location
# step3: delete temporary snapshot created in step 1
#
# [Note]
# please make sure you have enough disk space for ExportPath, or backup will fail
# tested on Xenserver 5.6 sp2 and 6.2
# Xenserver 6.2's performance is at least 4 times better than Xenserver 5.6
# on error, script will print the reason, and proceed to handle next VM
# backed up file format: vm_label + "backup" + date of snapshot, i.e,
win71_backup_2013-12-31_17-11-47.xva
#
##### Config #######
VMs="4bce3dc4-a1f1-66c7-48b5-31536be6f123,278fc9f6-f377-fa30-bd54-
a3b239027456,167e0e3e-a991-bae0-2b04-abad270d0789"
ExportPath="/mnt/test"
####################
vm_array=(${VMs//,/ })
ret_code=0
snapshot_uuid_array=
snapshot_name_array=
backup_ext=".xva"
echo "Starting to backup..."
echo "VM list: ${vm_array[@]}"
echo "ExportPath: ${ExportPath}"
if [[ "$ExportPath" != */ ]]; then
ExportPath="$ExportPath/"
fi
for i in "${!vm_array[@]}"; do
# get vm label
uuid=${vm_array[$i]}
vm_label_raw=`xe vm-param-get param-name=name-label uuid=$uuid`
if [ $? -ne 0 ]; then
echo "failed to get VM label uuid = $uuid"
ret_code=1
continue
fi
vm_label=`echo "$vm_label_raw" | tr ' ' _ | tr -d '(' | tr -d ')'`
# prepare snapshot name
date=$(date +%Y-%m-%d_%H-%M-%S)
snapshot_name=$vm_label"_backup_"$date
# snapshot vm
snapshot_uuid=`xe vm-snapshot uuid=$uuid new-name-label=$snapshot_name`
if [ $? -ne 0 ]; then
echo "failed to snapshot VM uuid = $uuid"
ret_code=1
continue
fi
snapshot_uuid_array[$i]=$snapshot_uuid
snapshot_name_array[$i]=$snapshot_name
# remove is-a-template attribute from snapshot
echo=`xe template-param-set is-a-template=false uuid=$snapshot_uuid`
if [ $? -ne 0 ]; then
echo "failed to remove template attribute from VM uuid = $uuid"
ret_code=1
fi
done
# backup each VM to specified path and delete
for i in "${!snapshot_uuid_array[@]}"; do
snapshot_uuid=${snapshot_uuid_array[$i]}
snapshot_name=${snapshot_name_array[$i]}
echo "Start backup $snapshot_name ..."
echo=`xe vm-export uuid=$snapshot_uuid filename="$ExportPath$snapshot_name$backup_ext"`
if [ $? -ne 0 ]; then
echo "failed to export snapshot name = $snapshot_name$backup_ext"
ret_code=1
else
echo "Successfully backup $snapshot_name to $ExportPath"
fi
echo=`xe vm-uninstall force=true uuid=$snapshot_uuid`
if [ $? -ne 0 ]; then
echo "failed to remove temporary snapshot name = $snapshot_name"
ret_code=1
fi
done
exit $ret_code