主要步骤如下。
通过SSH连接到Xenserver
通过awk命令过滤出虚拟机名称及uuid并输出到一个文本
创建一块虚拟磁盘并已经格式化,后续此磁盘用于克隆新磁盘
通过while循环读取步骤2输出的信息设置新克隆的磁盘名称
通过步骤2输出的信息指定新克隆的磁盘挂载给指定uuid虚拟机
#通过awk命令过滤所需信息并重定向到/opt/vm-uuid文件中
xe vm-list | awk '$1==“uuid”||$1==“name-label”{print KaTeX parse error: Expected 'EOF', got '}' at position 3: NF}̲' | xargs -n2 |…(hostname) '$2!=var {print $2,KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲' >/opt/vm-uuid…(xe vdi-create name-label=TEMP-DATA type=user virtual-size=5GiB sr-uuid=8a6c6978-2671-68af-8faf-f5b8f9c0af9c)
#通过while循环逐行读取文本内容并创建虚拟机磁盘挂载给指定uuid虚拟机,每读取一行执行一次命令,直至读取完成后,循环退出。
cat /opt/vm-uuid | while read line
do
vm_name=echo $line | awk '{print $1}'
vm_uuid=echo $line | awk '{print $2}'
#echo $vm_name
#echo
v
m
u
u
i
d
v
d
i
=
vm_uuid vdi=
vmuuidvdi=(xe vdi-clone new-name-label=
v
m
n
a
m
e
−
D
A
T
A
u
u
i
d
=
vm_name-DATA uuid=
vmname−DATAuuid=Nvdi new-name-description=KaTeX parse error: Undefined control sequence: \e at position 32: … echo -e "\̲e̲[32m 管理员正在将磁盘[vm_name-DATA] 挂载给虚拟机[KaTeX parse error: Undefined control sequence: \e at position 11: vm_name]中 \̲e̲[0m" vb…(xe vbd-create device=5 vdi-uuid=
v
d
i
v
m
−
u
u
i
d
=
vdi vm-uuid=
vdivm−uuid=vm_uuid type=Disk mode=RW)
xe vbd-plug uuid=$vbd &>/dev/null
done