Update vmcreate1.sh

This commit is contained in:
2025-10-26 19:32:16 +00:00
parent 79d748a7a8
commit 07e1d4b59e

View File

@@ -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....."