#!/bin/bash remove=false while getopts "R" opt; do case $opt in R) remove=true;; \?) echo "Invalid option."; exit 1;; esac done if $remove; then # Сначала запрашиваем остановку ВСЕХ тачек, чтобы сэкономить время for line in $(cat khl_hosts) do ip=$(echo $line | cut -d ';' -f 1) vmid=$(echo $ip | cut -d '.' -f 3,4 | sed 's/\.// ') qm stop $vmid done # А теперь проверяем, что остановлена, и удаляем for line in $(cat khl_hosts) do ip=$(echo $line | cut -d ';' -f 1) vmid=$(echo $ip | cut -d '.' -f 3,4 | sed 's/\.// ') status=$(qm status $vmid | cut -d ' ' -f 2) until [[ $status -eq "stopped" ]] do echo "Waiting for VM $vmid become stopped..." sleep 1 done qm destroy $vmid --destroy-unreferenced-disks --purge done echo "Specified VMs REMOVED." exit 0 fi for line in $(cat khl_hosts) do ip=$(echo $line | cut -d ';' -f 1) hostname=$(echo $line | cut -d ';' -f 2) vmid=$(echo $ip | cut -d '.' -f 3,4 | sed 's/\.// ') qm clone 5000 $vmid --name $hostname --full if [ $? -eq 0 ] then echo "clone OK" else "clone ERROR"; exit 1 fi qm set $vmid --tags 3,gfx ## preparing custom CloudInit snippets cp ./khl.yaml /mnt/pve/syno-tigra/snippets/${vmid}_user.yaml sed -i "s/HOSTNAME/$hostname/g" /mnt/pve/syno-tigra/snippets/${vmid}_user.yaml qm resize $vmid scsi0 +50G qm set $vmid --cicustom "user=syno-tigra:snippets/${vmid}_user.yaml" qm set $vmid --ipconfig0 ip=$ip/24,gw=10.10.35.1 qm cloudinit update $vmid qm start $vmid done echo "VMs from 'khl_hosts' successfully created"