@ -1,16 +1,20 @@
#!/usr/bin/env bash
#!/usr/bin/env bash -ex
set -euo pipefail
shopt -s inherit_errexit nullglob
NEXTID = $( pvesh get /cluster/nextid)
NEXTID = $( pvesh get /cluster/nextid)
INTEGER = '^[0-9]+$'
INTEGER = '^[0-9]+$'
YW = ` echo "\033[33m" `
YW = ` echo "\033[33m" `
BL = ` echo "\033[36m" `
BL = ` echo "\033[36m" `
RD = ` echo "\033[01;31m" `
RD = ` echo "\033[01;31m" `
CM = '\xE2\x9C\x94\033'
BGN = ` echo "\033[4;92m" `
BGN = ` echo "\033[4;92m" `
GN = ` echo "\033[32m" `
GN = ` echo "\033[1;92m" `
DGN = ` echo "\033[32m" `
CL = ` echo "\033[m" `
CL = ` echo "\033[m" `
BFR = "\\r\\033[K"
HOLD = "-"
CM = " ${ GN } ✓ ${ CL } "
APP = "Zigbee2MQTT"
APP = "Zigbee2MQTT"
NSAPP = $( echo ${ APP ,, } | tr -d ' ' )
NSAPP = $( echo ${ APP ,, } | tr -d ' ' )
while true; do
while true; do
read -p " This will create a New ${ APP } LXC. Proceed(y/n)? " yn
read -p " This will create a New ${ APP } LXC. Proceed(y/n)? " yn
case $yn in
case $yn in
@ -34,39 +38,49 @@ ${CL}"
}
}
header_info
header_info
function pve_check( ) {
PVE = $( pveversion | grep "pve-manager/7" | wc -l)
function msg_info( ) {
if [ [ $PVE != 1 ] ] ; then
local msg = " $1 "
echo -e " ${ RD } This script requires Proxmox Virtual Environment 7.0 or greater "
echo -ne " ${ HOLD } ${ YW } ${ msg } ... "
}
function msg_ok( ) {
local msg = " $1 "
echo -e " ${ BFR } ${ CM } ${ GN } ${ msg } ${ CL } "
}
function PVE_CHECK( ) {
PVE = $( pveversion | grep "pve-manager/7" | wc -l)
if [ [ $PVE != 1 ] ] ; then
echo -e " ${ RD } This script requires Proxmox Virtual Environment 7.0 or greater ${ CL } "
echo -e "Exiting..."
echo -e "Exiting..."
sleep 2
sleep 2
exit
exit
fi
fi
}
}
function default_settings( ) {
function default_settings( ) {
clear
clear
header_info
header_info
echo -e " ${ BL } Using Default Settings ${ CL } "
echo -e " ${ BL } Using Default Settings ${ CL } "
echo -e " ${ GN } Using CT Type ${ BGN } Privileged ${ CL } "
echo -e " ${ D GN} Using CT Type ${ BGN } Privileged ${ CL } "
CT_TYPE = "0"
CT_TYPE = "0"
echo -e " ${ GN} Using CT Password ${ BGN } Automatic Login ${ CL } "
echo -e " ${ D GN} Using CT Password ${ BGN } Automatic Login ${ CL } "
PW = " "
PW = " "
echo -e " ${ GN} Using ID ${ BGN } $NEXTID ${ CL } "
echo -e " ${ D GN} Using ID ${ BGN } $NEXTID ${ CL } "
CT_ID = $NEXTID
CT_ID = $NEXTID
echo -e " ${ GN} Using CT Name ${ BGN } $NSAPP ${ CL } "
echo -e " ${ D GN} Using CT Name ${ BGN } $NSAPP ${ CL } "
HN = $NSAPP
HN = $NSAPP
echo -e " ${ GN } Using Disk Size ${ BGN } 4GB ${ CL } "
echo -e " ${ DGN } Using Disk Size ${ BGN } 4GB ${ CL } "
SIZEDISK = "4"
DISK_SIZE = "4"
echo -e " ${ GN } Using Storage ${ BGN } local-lvm ${ CL } "
echo -e " ${ DGN } Using ${ BGN } 2vCPU ${ CL } "
STORAGETYPE = "local-lvm"
echo -e " ${ GN } Using ${ BGN } 2vCPU ${ CL } "
CORE_COUNT = "2"
CORE_COUNT = "2"
echo -e " ${ GN} Using ${ BGN } 1024MiB ${ CL } ${ GN } RAM ${ CL } "
echo -e " ${ DGN } Using ${ BGN } 1024MiB ${ CL } ${ GN } RAM ${ CL } "
RAM_SIZE = "1024"
RAM_SIZE = "1024"
echo -e " ${ GN} Using IP Address ${ BGN } DHCP ${ CL } "
echo -e " ${ D GN} Using IP Address ${ BGN } DHCP ${ CL } "
NET = dhcp
NET = dhcp
echo -e " ${ GN} Using VLAN Tag ${ BGN } NONE ${ CL } "
echo -e " ${ D GN} Using VLAN Tag ${ BGN } NONE ${ CL } "
VLAN = " "
VLAN = " "
}
}
@ -74,50 +88,48 @@ function advanced_settings() {
clear
clear
header_info
header_info
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ YW } Type Unprivileged, or Press [ENTER] for Default: Privileged "
echo -e " ${ YW } Type Unprivileged, or Press [ENTER] for Default: Privileged "
read CT_TYPE1
read CT_TYPE1
if [ -z $CT_TYPE1 ] ; then CT_TYPE1 = "Privileged"
if [ -z $CT_TYPE1 ] ; then CT_TYPE1 = "Privileged" CT_TYPE = "0" ;
CT_TYPE = "0"
echo -en " ${ DGN } Set CT Type ${ BL } $CT_TYPE1 ${ CL } "
echo -en " ${ GN } Set CT Type ${ BL } $CT_TYPE1 ${ CL } "
else
else
CT_TYPE1 = "Unprivileged"
CT_TYPE1 = "Unprivileged"
CT_TYPE = "1"
CT_TYPE = "1"
echo -en " ${ GN} Set CT Type ${ BL } Unprivileged ${ CL } ${ RD } NO DEVICE PASSTHROUGH ${ CL } "
echo -en " ${ D GN} Set CT Type ${ BL } Unprivileged ${ CL } "
fi ;
fi ;
echo -e " ${ CM } ${ CL } \r "
echo -e " ${ CM } ${ CL } \r "
sleep 1
sleep 1
clear
clear
header_info
header_info
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ GN} Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ D GN} Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ YW } Set Password, or Press [ENTER] for Default: Automatic Login "
echo -e " ${ YW } Set Password, or Press [ENTER] for Default: Automatic Login "
read PW1
read PW1
if [ -z $PW1 ] ; then PW1 = "Automatic Login" PW = " " ;
if [ -z $PW1 ] ; then PW1 = "Automatic Login" PW = " " ;
echo -en " ${ GN} Set CT ${ BL } $PW1 ${ CL } "
echo -en " ${ D GN} Set CT ${ BL } $PW1 ${ CL } "
else
else
PW = " -password $PW1 "
PW = " -password $PW1 "
echo -en " ${ GN } Set CT Password ${ BL } $PW1 ${ CL } "
echo -en " ${ DGN } Set CT Password ${ BL } $PW1 ${ CL } "
fi ;
fi ;
echo -e " ${ CM } ${ CL } \r "
echo -e " ${ CM } ${ CL } \r "
sleep 1
sleep 1
clear
clear
header_info
header_info
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ GN} Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ D GN} Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ GN} Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ D GN} Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ YW } Enter the CT ID, or Press [ENTER] to automatically generate ( ${ NEXTID } ) "
echo -e " ${ YW } Enter the CT ID, or Press [ENTER] to automatically generate ( ${ NEXTID } ) "
read CT_ID
read CT_ID
if [ -z $CT_ID ] ; then CT_ID = $NEXTID ; fi ;
if [ -z $CT_ID ] ; then CT_ID = $NEXTID ; fi ;
echo -en " ${ GN} Set CT ID To ${ BL } $CT_ID ${ CL } "
echo -en " ${ D GN} Set CT ID To ${ BL } $CT_ID ${ CL } "
echo -e " ${ CM } ${ CL } \r "
echo -e " ${ CM } ${ CL } \r "
sleep 1
sleep 1
clear
clear
header_info
header_info
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ GN} Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ D GN} Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ GN} Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ D GN} Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ GN} Using ID ${ BGN } $CT_ID ${ CL } "
echo -e " ${ D GN} Using ID ${ BGN } $CT_ID ${ CL } "
echo -e " ${ YW } Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
echo -e " ${ YW } Enter CT Name (no-spaces), or Press [ENTER] for Default: $NSAPP "
read CT_NAME
read CT_NAME
if [ -z $CT_NAME ] ; then
if [ -z $CT_NAME ] ; then
@ -125,127 +137,101 @@ header_info
else
else
HN = $( echo ${ CT_NAME ,, } | tr -d ' ' )
HN = $( echo ${ CT_NAME ,, } | tr -d ' ' )
fi
fi
echo -en " ${ GN} Set CT Name To ${ BL } $HN ${ CL } "
echo -en " ${ D GN} Set CT Name To ${ BL } $HN ${ CL } "
echo -e " ${ CM } ${ CL } \r "
echo -e " ${ CM } ${ CL } \r "
sleep 1
sleep 1
clear
clear
header_info
header_info
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ GN} Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ D GN} Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ GN} Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ D GN} Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ GN} Using ID ${ BGN } $CT_ID ${ CL } "
echo -e " ${ D GN} Using ID ${ BGN } $CT_ID ${ CL } "
echo -e " ${ GN} Using CT Name ${ BGN } $HN ${ CL } "
echo -e " ${ D GN} Using CT Name ${ BGN } $HN ${ CL } "
echo -e " ${ YW } Enter a Disk Size, or Press [ENTER] for Default: 4Gb "
echo -e " ${ YW } Enter a Disk Size, or Press [ENTER] for Default: 4Gb "
read SIZEDISK
read DISK_ SIZE
if [ -z $ SIZE DISK ] ; then SIZEDISK = "4" ; fi ;
if [ -z $ DISK_SIZE ] ; then DISK_ SIZE= "4" ; fi ;
if ! [ [ $ SIZEDISK = ~ $INTEGER ] ] ; then echo "ERROR! SIZEDISK MUST HAVE INTEGER NUMBER!"; exit; fi ;
if ! [ [ $ DISK_ SIZE = ~ $INTEGER ] ] ; then echo "ERROR! DISK SIZE MUST HAVE INTEGER NUMBER!"; exit; fi ;
echo -en " ${ GN} Set Disk Size To ${ BL } $ SIZEDISK ${ CL } "
echo -en " ${ D GN} Set Disk Size To ${ BL } $ DISK_ SIZE${ CL } "
echo -e " ${ CM } ${ CL } \r "
echo -e " ${ CM } ${ CL } \r "
sleep 1
sleep 1
clear
clear
header_info
header_info
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ GN } Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ DGN } Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ GN } Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ DGN } Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ GN } Using ID ${ BGN } $CT_ID ${ CL } "
echo -e " ${ DGN } Using ID ${ BGN } $CT_ID ${ CL } "
echo -e " ${ GN } Using CT Name ${ BGN } $HN ${ CL } "
echo -e " ${ DGN } Using CT Name ${ BGN } $HN ${ CL } "
echo -e " ${ GN } Using Disk Size ${ BGN } $SIZEDISK ${ CL } "
echo -e " ${ DGN } Using Disk Size ${ BGN } $DISK_SIZE ${ CL } "
echo -e " ${ YW } Storages Available: ${ CL } "
echo " "
for stg in ` pvesh get storage --noborder --noheader`
do
echo -e " ${ BL } - ${ stg } ${ CL } "
done
echo " "
echo -e " ${ YW } Enter which storage to create the CT, or Press [ENTER] for Default: local-lvm "
read STORAGETYPE
if [ -z $STORAGETYPE ] ; then STORAGETYPE = "local-lvm" ; fi ;
echo -en " ${ GN } Set Storage To ${ BL } $STORAGETYPE ${ CL } "
echo -e " ${ CM } ${ CL } \r "
sleep 1
clear
header_info
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ GN } Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ GN } Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ GN } Using ID ${ BGN } $CT_ID ${ CL } "
echo -e " ${ GN } Using CT Name ${ BGN } $HN ${ CL } "
echo -e " ${ GN } Using Disk Size ${ BGN } $SIZEDISK ${ CL } "
echo -e " ${ GN } Using Storage ${ BGN } $STORAGETYPE ${ CL } "
echo -e " ${ YW } Allocate CPU cores, or Press [ENTER] for Default: 2 "
echo -e " ${ YW } Allocate CPU cores, or Press [ENTER] for Default: 2 "
read CORE_COUNT
read CORE_COUNT
if [ -z $CORE_COUNT ] ; then CORE_COUNT = "2" ; fi ;
if [ -z $CORE_COUNT ] ; then CORE_COUNT = "2" ; fi ;
echo -en " ${ GN} Set Cores To ${ BL } $CORE_COUNT ${ CL } "
echo -en " ${ DGN } Set Cores To ${ BL } $CORE_COUNT ${ CL } "
echo -e " ${ CM } ${ CL } \r "
echo -e " ${ CM } ${ CL } \r "
sleep 1
sleep 1
clear
clear
header_info
header_info
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ GN } Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ DGN } Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ GN } Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ DGN } Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ GN } Using ID ${ BGN } $CT_ID ${ CL } "
echo -e " ${ DGN } Using ID ${ BGN } $CT_ID ${ CL } "
echo -e " ${ GN } Using CT Name ${ BGN } $HN ${ CL } "
echo -e " ${ DGN } Using CT Name ${ BGN } $HN ${ CL } "
echo -e " ${ GN } Using Disk Size ${ BGN } $SIZEDISK ${ CL } "
echo -e " ${ DGN } Using Disk Size ${ BGN } $DISK_SIZE ${ CL } "
echo -e " ${ GN } Using Storage ${ BGN } $STORAGETYPE ${ CL } "
echo -e " ${ DGN } Using ${ BGN } ${ CORE_COUNT } vCPU ${ CL } "
echo -e " ${ GN } Using ${ BGN } ${ CORE_COUNT } vCPU ${ CL } "
echo -e " ${ YW } Allocate RAM in MiB, or Press [ENTER] for Default: 1024 "
echo -e " ${ YW } Allocate RAM in MiB, or Press [ENTER] for Default: 1024 "
read RAM_SIZE
read RAM_SIZE
if [ -z $RAM_SIZE ] ; then RAM_SIZE = "1024" ; fi ;
if [ -z $RAM_SIZE ] ; then RAM_SIZE = "1024" ; fi ;
echo -en " ${ GN} Set RAM To ${ BL } $RAM_SIZE ${ CL } "
echo -en " ${ DGN } Set RAM To ${ BL } $RAM_SIZE ${ CL } "
echo -e " ${ CM } ${ CL } \n "
echo -e " ${ CM } ${ CL } \n "
sleep 1
sleep 1
clear
clear
header_info
header_info
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ GN } Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ DGN } Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ GN } Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ DGN } Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ GN } Using ID ${ BGN } $CT_ID ${ CL } "
echo -e " ${ DGN } Using ID ${ BGN } $CT_ID ${ CL } "
echo -e " ${ GN } Using CT Name ${ BGN } $HN ${ CL } "
echo -e " ${ DGN } Using CT Name ${ BGN } $HN ${ CL } "
echo -e " ${ GN } Using Disk Size ${ BGN } $SIZEDISK ${ CL } "
echo -e " ${ DGN } Using Disk Size ${ BGN } $DISK_SIZE ${ CL } "
echo -e " ${ GN } Using Storage ${ BGN } $STORAGETYPE ${ CL } "
echo -e " ${ DGN } Using ${ BGN } ${ CORE_COUNT } vCPU ${ CL } "
echo -e " ${ GN } Using ${ BGN } ${ CORE_COUNT } vCPU ${ CL } "
echo -e " ${ DGN } Using ${ BGN } ${ RAM_SIZE } MiB ${ CL } ${ GN } RAM ${ CL } "
echo -e " ${ GN } Using ${ BGN } ${ RAM_SIZE } MiB ${ CL } ${ GN } RAM ${ CL } "
echo -e " ${ YW } Enter a IP Address, or Press [ENTER] for Default: DHCP "
echo -e " ${ YW } Enter a IP Address, or Press [ENTER] for Default: DHCP "
read NET
read NET
if [ -z $NET ] ; then NET = "dhcp" ; fi ;
if [ -z $NET ] ; then NET = "dhcp" ; fi ;
echo -en " ${ GN} Set IP Address To ${ BL } $NET ${ CL } "
echo -en " ${ D GN} Set IP Address To ${ BL } $NET ${ CL } "
echo -e " ${ CM } ${ CL } \n "
echo -e " ${ CM } ${ CL } \n "
sleep 1
sleep 1
clear
clear
header_info
header_info
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ GN } Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ DGN } Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ GN } Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ DGN } Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ GN } Using ID ${ BGN } $CT_ID ${ CL } "
echo -e " ${ DGN } Using ID ${ BGN } $CT_ID ${ CL } "
echo -e " ${ GN } Using CT Name ${ BGN } $HN ${ CL } "
echo -e " ${ DGN } Using CT Name ${ BGN } $HN ${ CL } "
echo -e " ${ GN } Using Disk Size ${ BGN } $SIZEDISK ${ CL } "
echo -e " ${ DGN } Using Disk Size ${ BGN } $DISK_SIZE ${ CL } "
echo -e " ${ GN } Using Storage ${ BGN } $STORAGETYPE ${ CL } "
echo -e " ${ DGN } Using ${ BGN } ${ CORE_COUNT } vCPU ${ CL } "
echo -e " ${ GN } Using ${ BGN } ${ CORE_COUNT } vCPU ${ CL } "
echo -e " ${ DGN } Using ${ BGN } ${ RAM_SIZE } MiB ${ CL } ${ GN } RAM ${ CL } "
echo -e " ${ GN } Using ${ BGN } ${ RAM_SIZE } MiB ${ CL } ${ GN } RAM ${ CL } "
echo -e " ${ DGN } Using IP Address ${ BGN } $NET ${ CL } "
echo -e " ${ GN } Using IP Address ${ BGN } $NET ${ CL } "
echo -e " ${ YW } Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
echo -e " ${ YW } Enter a VLAN Tag, or Press [ENTER] for Default: NONE "
read VLAN1
read VLAN1
if [ -z $VLAN1 ] ; then VLAN1 = "NONE" VLAN = " " ;
if [ -z $VLAN1 ] ; then VLAN1 = "NONE" VLAN = " " ;
echo -en " ${ GN} Set VLAN Tag To ${ BL } $VLAN1 ${ CL } "
echo -en " ${ D GN} Set VLAN Tag To ${ BL } $VLAN1 ${ CL } "
else
else
VLAN = " -tag $VLAN1 "
VLAN = " -tag $VLAN1 "
echo -en " ${ GN} Set VLAN Tag To ${ BL } $VLAN1 ${ CL } "
echo -en " ${ D GN} Set VLAN Tag To ${ BL } $VLAN1 ${ CL } "
fi ;
fi ;
echo -e " ${ CM } ${ CL } \n "
echo -e " ${ CM } ${ CL } \n "
sleep 1
sleep 1
clear
clear
header_info
header_info
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ RD } Using Advanced Settings ${ CL } "
echo -e " ${ GN } Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ DGN } Using CT Type ${ BGN } $CT_TYPE1 ${ CL } "
echo -e " ${ GN } Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ DGN } Using CT Password ${ BGN } $PW1 ${ CL } "
echo -e " ${ GN } Using ID ${ BGN } $CT_ID ${ CL } "
echo -e " ${ DGN } Using ID ${ BGN } $CT_ID ${ CL } "
echo -e " ${ GN } Using CT Name ${ BGN } $HN ${ CL } "
echo -e " ${ DGN } Using CT Name ${ BGN } $HN ${ CL } "
echo -e " ${ GN } Using Disk Size ${ BGN } $SIZEDISK ${ CL } "
echo -e " ${ DGN } Using Disk Size ${ BGN } $DISK_SIZE ${ CL } "
echo -e " ${ GN } Using Storage ${ BGN } $STORAGETYPE ${ CL } "
echo -e " ${ DGN } Using ${ BGN } ${ CORE_COUNT } vCPU ${ CL } "
echo -e " ${ GN } Using ${ BGN } ${ CORE_COUNT } vCPU ${ CL } "
echo -e " ${ DGN } Using ${ BGN } ${ RAM_SIZE } MiB ${ CL } ${ GN } RAM ${ CL } "
echo -e " ${ GN } Using ${ BGN } ${ RAM_SIZE } MiB ${ CL } ${ GN } RAM ${ CL } "
echo -e " ${ DGN } Using IP Address ${ BGN } $NET ${ CL } "
echo -e " ${ GN } Using IP Address ${ BGN } $NET ${ CL } "
echo -e " ${ DGN } Using VLAN Tag ${ BGN } $VLAN1 ${ CL } "
echo -e " ${ GN } Using VLAN Tag ${ BGN } $VLAN1 ${ CL } "
read -p "Are these settings correct(y/n)? " -n 1 -r
read -p "Are these settings correct(y/n)? " -n 1 -r
echo
echo
@ -263,56 +249,10 @@ function start_script() {
advanced_settings
advanced_settings
fi ;
fi ;
}
}
pve_check
start_script
set -o errexit
start_script
set -o errtrace
set -o nounset
set -o pipefail
shopt -s expand_aliases
alias die = 'EXIT=$? LINE=$LINENO error_exit'
trap die ERR
trap cleanup EXIT
function error_exit( ) {
if [ " $CT_TYPE " = = "1" ] ; then
trap - ERR
local DEFAULT = 'Unknown failure occured.'
local REASON = " \e[97m ${ 1 :- $DEFAULT } \e[39m "
local FLAG = " \e[91m[ERROR] \e[93m $EXIT @ $LINE "
msg " $FLAG $REASON "
[ ! -z ${ CTID - } ] && cleanup_ctid
exit $EXIT
}
function warn( ) {
local REASON = " \e[97m $1 \e[39m "
local FLAG = "\e[93m[WARNING]\e[39m"
msg " $FLAG $REASON "
}
function info( ) {
local REASON = " $1 "
local FLAG = "\e[36m[INFO]\e[39m"
msg " $FLAG $REASON "
}
function msg( ) {
local TEXT = " $1 "
echo -e " $TEXT "
}
function cleanup_ctid( ) {
if $( pct status $CTID & >/dev/null) ; then
if [ " $( pct status $CTID | awk '{print $2}' ) " = = "running" ] ; then
pct stop $CTID
fi
pct destroy $CTID
elif [ " $( pvesm list $STORAGE --vmid $CTID ) " != "" ] ; then
pvesm free $ROOTFS
fi
}
function cleanup( ) {
popd >/dev/null
rm -rf $TEMP_DIR
}
if [ " $CT_TYPE " = = "1" ] ; then
FEATURES = "nesting=1,keyctl=1"
FEATURES = "nesting=1,keyctl=1"
else
else
FEATURES = "nesting=1"
FEATURES = "nesting=1"
@ -324,7 +264,7 @@ pushd $TEMP_DIR >/dev/null
export CTID = $CT_ID
export CTID = $CT_ID
export PCT_OSTYPE = debian
export PCT_OSTYPE = debian
export PCT_OSVERSION = 11
export PCT_OSVERSION = 11
export PCT_DISK_SIZE = $ SIZEDISK
export PCT_DISK_SIZE = $ DISK_ SIZE
export PCT_OPTIONS = "
export PCT_OPTIONS = "
-features $FEATURES
-features $FEATURES
-hostname $HN
-hostname $HN
@ -354,14 +294,12 @@ lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=
lxc.mount.entry: /dev/ttyACM0 dev/ttyACM0 none bind,optional,create= file
lxc.mount.entry: /dev/ttyACM0 dev/ttyACM0 none bind,optional,create= file
EOF
EOF
echo -en " ${ GN } Starting LXC Container... "
msg_info "Starting LXC Container "
pct start $CTID
pct start $CTID
echo -e " ${ CM } ${ CL } \r "
msg_ok "Started LXC Container"
alias lxc-cmd= " lxc-attach -n $CTID -- "
lxc-cmd bash -c " $( wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main /setup/zigbee2mqtt-install.sh) " || exit
lxc-attach -n $CTID -- bash -c " $( wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/v3/setup/zigbee2mqtt-install.sh) " || exit
IP = $( pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}' )
IP = $( pct exec $CTID ip a s dev eth0 | sed -n '/inet / s/\// /p' | awk '{print $2}' )
echo -e " ${ GN } Successfully created ${ APP } LXC to ${ CL } ${ BL } $CTID ${ CL } . \n "
msg_ok "Completed Successfully!\n "