Update vmcreate1.sh
This commit is contained in:
106
vmcreate1.sh
106
vmcreate1.sh
@@ -132,70 +132,70 @@ if ! [[ $size -ge 10 && $size -le 500 ]]; then echo "Disk size increment shoud b
|
|||||||
# exit 1
|
# exit 1
|
||||||
# fi
|
# fi
|
||||||
|
|
||||||
# Coздаём временный файл из проверенных строк
|
# Создаём hosts.tmp из аргументов/файла, попутно проверяя данные
|
||||||
|
# Если заданы И аргументы, И файл - сразу нахуй
|
||||||
if [[ $# -ne 0 && -v $file ]]; then
|
if [[ $# -ne 0 && -v $file ]]; then
|
||||||
echo "Please use EITHER file OR arguments. Use '-h' flag for help"
|
echo "Please use EITHER file OR arguments. Use '-h' flag for help"
|
||||||
exit 3
|
exit 3
|
||||||
else
|
else
|
||||||
|
# Если файл задан
|
||||||
if [[ -v $file ]]; then
|
if [[ -v $file ]]; then
|
||||||
|
# Но не существует, то нахуй
|
||||||
if [[ ! -e "$file" ]];then
|
if [[ ! -e "$file" ]];then
|
||||||
echo "File $file does not exist. Aborting."
|
echo "File $file does not exist. Aborting."
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
# А если не задан, то дефолтный. Если при этом есть аргументы, то в след. цикле будут использоваться они.
|
||||||
file="hosts"
|
file="hosts"
|
||||||
fi
|
fi
|
||||||
|
# Если заданы аргументы
|
||||||
if [[ $# -ne 0 ]]; then
|
if [[ $# -ne 0 ]]; then
|
||||||
|
echo "DEBUG using arguments"
|
||||||
|
touch hosts.tmp
|
||||||
# Проверка файла на соответствие шаблону IPv4 адреса и hostname, создаём временный файл из валидных строк
|
echo -n "" > hosts.tmp
|
||||||
if [[ $# -eq 0 && -e "$file" ]]; then
|
for arg in "$@"; do
|
||||||
echo "DEBUG file: $file"
|
ipcheck "$arg"
|
||||||
touch hosts.tmp
|
if [ $? -eq 0 ]; then
|
||||||
echo -n "" > hosts.tmp
|
echo -n "$arg;" >> ./hosts.tmp
|
||||||
echo "DEBUG"
|
echo -n "vm" >> ./hosts.tmp
|
||||||
cat "$file"
|
get_vmid "$arg" >> hosts.tmp
|
||||||
for line in $(cat "$file"); do
|
echo >> hosts.tmp
|
||||||
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
|
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
|
rm hosts.tmp
|
||||||
exit 3
|
exit 5
|
||||||
fi
|
fi
|
||||||
else
|
done
|
||||||
echo "$ip is not a valid IPv4 address (10.10.XXX.YYY). Aborting."
|
# А если нет, то файл.
|
||||||
rm hosts.tmp
|
else
|
||||||
exit 4
|
echo "DEBUG using file: $file"
|
||||||
fi
|
touch hosts.tmp
|
||||||
done
|
echo -n "" > hosts.tmp
|
||||||
fi
|
echo "DEBUG cat file"
|
||||||
|
cat "$file"
|
||||||
# Если заданы аргументы, то создаем временный файл
|
for line in $(cat "$file"); do
|
||||||
if [[ $# -ne 0 ]]; then
|
echo "DEBUG line:$line"
|
||||||
echo "DEBUG using arguments"
|
ip=$(echo -n $line | cut -d ';' -f 1)
|
||||||
touch hosts.tmp
|
hostname=$(echo -n $line | cut -d ';' -f 2)
|
||||||
echo -n "" > hosts.tmp
|
ipcheck "$ip"
|
||||||
for arg in "$@"; do
|
if [[ $? -eq 0 ]]; then
|
||||||
ipcheck "$arg"
|
hostcheck "$hostname"
|
||||||
if [ $? -eq 0 ]; then
|
if [[ $? -eq 0 ]]; then
|
||||||
echo -n "$arg;" >> ./hosts.tmp
|
echo $line >> hosts.tmp
|
||||||
echo -n "vm" >> ./hosts.tmp
|
else
|
||||||
get_vmid "$arg" >> hosts.tmp
|
echo "Hostname $hostname is not valid. Should contain only letters, numbers and dash. Aborting."
|
||||||
echo >> hosts.tmp
|
rm hosts.tmp
|
||||||
else
|
exit 5
|
||||||
echo "Argument $arg is not a valid IPv4 address (10.10.*.*). Aborting."
|
fi
|
||||||
rm hosts.tmp
|
else
|
||||||
exit 5
|
echo "$ip is not a valid IPv4 address (10.10.XXX.YYY). Aborting."
|
||||||
fi
|
rm hosts.tmp
|
||||||
done
|
exit 5
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
# Закончили с вводными данными
|
||||||
|
|
||||||
# Проверяем ключ
|
# Проверяем ключ
|
||||||
if [[ -v $pubkey ]]; then
|
if [[ -v $pubkey ]]; then
|
||||||
@@ -223,18 +223,19 @@ do
|
|||||||
snippet=
|
snippet=
|
||||||
if qm status "$vmid"; then
|
if qm status "$vmid"; then
|
||||||
echo "VM $vmid exists. Aborting"
|
echo "VM $vmid exists. Aborting"
|
||||||
exit 9
|
exit 7
|
||||||
elif [[ -e "$snippet" ]]; then
|
elif [[ -e "$snippet" ]]; then
|
||||||
echo "Snippet $snippet exists. Aborting"
|
echo "Snippet $snippet exists. Aborting"
|
||||||
exit 9
|
exit 7
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
###DEBUG 1
|
### DEBUG 1
|
||||||
echo "DEBUG File hosts.tmp:"
|
echo "DEBUG cat hosts.tmp:"
|
||||||
cat hosts.tmp; echo
|
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)
|
for line in $(cat hosts.tmp)
|
||||||
do
|
do
|
||||||
@@ -259,7 +260,6 @@ do
|
|||||||
echo "TAG: $tag"
|
echo "TAG: $tag"
|
||||||
echo "$snippet:"
|
echo "$snippet:"
|
||||||
cat "$snippet"
|
cat "$snippet"
|
||||||
read -p "Press Enter"
|
|
||||||
exit 100
|
exit 100
|
||||||
####
|
####
|
||||||
echo -n "Now cloning VM $vmnum from a template....."
|
echo -n "Now cloning VM $vmnum from a template....."
|
||||||
|
|||||||
Reference in New Issue
Block a user