From 07e1d4b59e60132a6f7f630dbf17903ae91207b4 Mon Sep 17 00:00:00 2001 From: Dmitry Badovsky Date: Sun, 26 Oct 2025 19:32:16 +0000 Subject: [PATCH] Update vmcreate1.sh --- vmcreate1.sh | 106 +++++++++++++++++++++++++-------------------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/vmcreate1.sh b/vmcreate1.sh index 3cb40cd..42cc789 100644 --- a/vmcreate1.sh +++ b/vmcreate1.sh @@ -132,70 +132,70 @@ if ! [[ $size -ge 10 && $size -le 500 ]]; then echo "Disk size increment shoud b # exit 1 # fi -# Coздаём временный файл из проверенных строк +# Создаём hosts.tmp из аргументов/файла, попутно проверяя данные +# Если заданы И аргументы, И файл - сразу нахуй if [[ $# -ne 0 && -v $file ]]; then echo "Please use EITHER file OR arguments. Use '-h' flag for help" exit 3 else + # Если файл задан if [[ -v $file ]]; then + # Но не существует, то нахуй if [[ ! -e "$file" ]];then echo "File $file does not exist. Aborting." exit 4 fi else + # А если не задан, то дефолтный. Если при этом есть аргументы, то в след. цикле будут использоваться они. file="hosts" fi + # Если заданы аргументы if [[ $# -ne 0 ]]; then - - -# Проверка файла на соответствие шаблону IPv4 адреса и hostname, создаём временный файл из валидных строк -if [[ $# -eq 0 && -e "$file" ]]; then - echo "DEBUG file: $file" - touch hosts.tmp - echo -n "" > hosts.tmp - echo "DEBUG" - cat "$file" - for line in $(cat "$file"); do - echo "DEBUG line:$line" - ip=$(echo -n $line | cut -d ';' -f 1) - hostname=$(echo -n $line | cut -d ';' -f 2) - ipcheck "$ip" - if [[ $? -eq 0 ]]; then - hostcheck "$hostname" - if [[ $? -eq 0 ]]; then - echo $line >> hosts.tmp + echo "DEBUG using arguments" + touch hosts.tmp + echo -n "" > hosts.tmp + for arg in "$@"; do + ipcheck "$arg" + if [ $? -eq 0 ]; then + echo -n "$arg;" >> ./hosts.tmp + echo -n "vm" >> ./hosts.tmp + get_vmid "$arg" >> hosts.tmp + echo >> hosts.tmp else - echo "Hostname $hostname is not valid. Should contain only letters, numbers and dash. Aborting." + echo "Argument $arg is not a valid IPv4 address (10.10.*.*). Aborting." rm hosts.tmp - exit 3 + exit 5 fi - else - echo "$ip is not a valid IPv4 address (10.10.XXX.YYY). Aborting." - rm hosts.tmp - exit 4 - fi - done -fi - -# Если заданы аргументы, то создаем временный файл -if [[ $# -ne 0 ]]; then - echo "DEBUG using arguments" - touch hosts.tmp - echo -n "" > hosts.tmp - for arg in "$@"; do - ipcheck "$arg" - if [ $? -eq 0 ]; then - echo -n "$arg;" >> ./hosts.tmp - echo -n "vm" >> ./hosts.tmp - get_vmid "$arg" >> hosts.tmp - echo >> hosts.tmp - else - echo "Argument $arg is not a valid IPv4 address (10.10.*.*). Aborting." - rm hosts.tmp - exit 5 - fi - done -fi + done + # А если нет, то файл. + else + echo "DEBUG using file: $file" + touch hosts.tmp + echo -n "" > hosts.tmp + echo "DEBUG cat file" + cat "$file" + for line in $(cat "$file"); do + echo "DEBUG line:$line" + ip=$(echo -n $line | cut -d ';' -f 1) + hostname=$(echo -n $line | cut -d ';' -f 2) + ipcheck "$ip" + if [[ $? -eq 0 ]]; then + hostcheck "$hostname" + if [[ $? -eq 0 ]]; then + echo $line >> hosts.tmp + else + echo "Hostname $hostname is not valid. Should contain only letters, numbers and dash. Aborting." + rm hosts.tmp + exit 5 + fi + else + echo "$ip is not a valid IPv4 address (10.10.XXX.YYY). Aborting." + rm hosts.tmp + exit 5 + fi + done + fi +# Закончили с вводными данными # Проверяем ключ if [[ -v $pubkey ]]; then @@ -223,18 +223,19 @@ do snippet= if qm status "$vmid"; then echo "VM $vmid exists. Aborting" - exit 9 + exit 7 elif [[ -e "$snippet" ]]; then echo "Snippet $snippet exists. Aborting" - exit 9 + exit 7 fi done -###DEBUG 1 -echo "DEBUG File hosts.tmp:" +### DEBUG 1 +echo "DEBUG cat hosts.tmp:" cat hosts.tmp; echo ### +read -p "Script is ready to create $(cat hosts.tmp | wc -l) VMs. Press Enter" for line in $(cat hosts.tmp) do @@ -259,7 +260,6 @@ do echo "TAG: $tag" echo "$snippet:" cat "$snippet" - read -p "Press Enter" exit 100 #### echo -n "Now cloning VM $vmnum from a template....."