✨ feat: Wizard so spätnou navigáciou + oddelenie názvu a hostname
- Cancel = Späť na predchádzajúci krok (na kroku 1 = Zrušiť) - Názov kontajnera sa zobrazí v Proxmoxe tak ako ho zadáš - Hostname sa automaticky vytvorí malými písmenami - Resources (disk/ram/cpu) v jednom kroku - Potvrdenie zobrazuje kompletný súhrn Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
268
ct/ubuntu.sh
268
ct/ubuntu.sh
@@ -62,65 +62,7 @@ simple_install() {
|
|||||||
|
|
||||||
header_info
|
header_info
|
||||||
|
|
||||||
# --- KROK 1: Hostname ---
|
# Stiahni users.json dopredu (len raz)
|
||||||
HN=$(whiptail --backtitle "Ubuntu LXC Setup" \
|
|
||||||
--title "HOSTNAME" \
|
|
||||||
--inputbox "\nZadaj hostname pre kontajner:" 10 58 "ubuntu" \
|
|
||||||
3>&1 1>&2 2>&3) || exit_script
|
|
||||||
HN=$(echo "${HN,,}" | tr -d ' ')
|
|
||||||
[[ -z "$HN" ]] && HN="ubuntu"
|
|
||||||
|
|
||||||
# --- KROK 2: IP adresa ---
|
|
||||||
local ip_input
|
|
||||||
ip_input=$(whiptail --backtitle "Ubuntu LXC Setup" \
|
|
||||||
--title "IP ADRESA" \
|
|
||||||
--inputbox "\nZadaj statickú IP adresu s maskou\n(napr. 192.168.1.100/24)\n\nAlebo nechaj prázdne pre DHCP:" 12 58 "" \
|
|
||||||
3>&1 1>&2 2>&3) || exit_script
|
|
||||||
|
|
||||||
if [[ -n "$ip_input" ]]; then
|
|
||||||
NET="$ip_input"
|
|
||||||
# Gateway
|
|
||||||
local default_gw
|
|
||||||
default_gw=$(echo "$ip_input" | cut -d'/' -f1 | sed 's/\.[0-9]*$/.1/')
|
|
||||||
GATE=$(whiptail --backtitle "Ubuntu LXC Setup" \
|
|
||||||
--title "GATEWAY" \
|
|
||||||
--inputbox "\nZadaj gateway:" 10 58 "$default_gw" \
|
|
||||||
3>&1 1>&2 2>&3) || exit_script
|
|
||||||
[[ -z "$GATE" ]] && GATE="$default_gw"
|
|
||||||
else
|
|
||||||
NET="dhcp"
|
|
||||||
GATE=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
# --- KROK 3: DNS ---
|
|
||||||
local dns_input
|
|
||||||
dns_input=$(whiptail --backtitle "Ubuntu LXC Setup" \
|
|
||||||
--title "DNS SERVERY" \
|
|
||||||
--inputbox "\nZadaj DNS servery (oddelené medzerou):" 10 58 "8.8.8.8 1.1.1.1" \
|
|
||||||
3>&1 1>&2 2>&3) || exit_script
|
|
||||||
[[ -z "$dns_input" ]] && dns_input="8.8.8.8 1.1.1.1"
|
|
||||||
NS="-nameserver=${dns_input}"
|
|
||||||
|
|
||||||
# --- KROK 4: Resources ---
|
|
||||||
DISK_SIZE=$(whiptail --backtitle "Ubuntu LXC Setup" \
|
|
||||||
--title "DISK" \
|
|
||||||
--inputbox "\nVeľkosť disku v GB:" 10 58 "$var_disk" \
|
|
||||||
3>&1 1>&2 2>&3) || exit_script
|
|
||||||
[[ -z "$DISK_SIZE" ]] && DISK_SIZE="$var_disk"
|
|
||||||
|
|
||||||
RAM_SIZE=$(whiptail --backtitle "Ubuntu LXC Setup" \
|
|
||||||
--title "RAM" \
|
|
||||||
--inputbox "\nVeľkosť RAM v MB:" 10 58 "$var_ram" \
|
|
||||||
3>&1 1>&2 2>&3) || exit_script
|
|
||||||
[[ -z "$RAM_SIZE" ]] && RAM_SIZE="$var_ram"
|
|
||||||
|
|
||||||
CORE_COUNT=$(whiptail --backtitle "Ubuntu LXC Setup" \
|
|
||||||
--title "CPU" \
|
|
||||||
--inputbox "\nPočet CPU jadier:" 10 58 "$var_cpu" \
|
|
||||||
3>&1 1>&2 2>&3) || exit_script
|
|
||||||
[[ -z "$CORE_COUNT" ]] && CORE_COUNT="$var_cpu"
|
|
||||||
|
|
||||||
# --- KROK 4: Výber užívateľov z users.json ---
|
|
||||||
msg_info "Sťahujem zoznam užívateľov"
|
msg_info "Sťahujem zoznam užívateľov"
|
||||||
local users_json
|
local users_json
|
||||||
users_json=$(curl -fsSL "$USERS_JSON_URL") || {
|
users_json=$(curl -fsSL "$USERS_JSON_URL") || {
|
||||||
@@ -129,40 +71,183 @@ simple_install() {
|
|||||||
}
|
}
|
||||||
msg_ok "Zoznam užívateľov stiahnutý"
|
msg_ok "Zoznam užívateľov stiahnutý"
|
||||||
|
|
||||||
# Parsovanie užívateľov bez jq — cez grep/sed
|
# Parsovanie užívateľov bez jq
|
||||||
local usernames=()
|
local usernames=()
|
||||||
local key_counts=()
|
local key_counts=()
|
||||||
while IFS= read -r uname; do
|
while IFS= read -r uname; do
|
||||||
[[ -n "$uname" ]] && usernames+=("$uname")
|
[[ -n "$uname" ]] && usernames+=("$uname")
|
||||||
done < <(echo "$users_json" | grep '"username"' | sed 's/.*"username"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/')
|
done < <(echo "$users_json" | grep '"username"' | sed 's/.*"username"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/')
|
||||||
|
|
||||||
# Počet SSH kľúčov pre každého užívateľa
|
|
||||||
local idx=0
|
|
||||||
for uname in "${usernames[@]}"; do
|
for uname in "${usernames[@]}"; do
|
||||||
local kc
|
local kc
|
||||||
kc=$(echo "$users_json" | sed -n "/$uname/,/\]/p" | grep 'ssh-' | wc -l)
|
kc=$(echo "$users_json" | sed -n "/$uname/,/\]/p" | grep 'ssh-' | wc -l)
|
||||||
key_counts+=("$kc")
|
key_counts+=("$kc")
|
||||||
idx=$((idx + 1))
|
|
||||||
done
|
done
|
||||||
|
|
||||||
local user_count=${#usernames[@]}
|
local user_count=${#usernames[@]}
|
||||||
|
|
||||||
if [[ "$user_count" -eq 0 ]]; then
|
# Predvolené hodnoty pre wizard
|
||||||
msg_warn "Žiadni užívatelia v users.json"
|
local _ct_name="Ubuntu"
|
||||||
SELECTED_USERS=""
|
local _ip_input=""
|
||||||
else
|
local _gate=""
|
||||||
local checklist_args=()
|
local _dns="8.8.8.8 1.1.1.1"
|
||||||
for i in $(seq 0 $((user_count - 1))); do
|
local _disk="$var_disk"
|
||||||
checklist_args+=("${usernames[$i]}" "${key_counts[$i]} SSH kľúč(ov)" "ON")
|
local _ram="$var_ram"
|
||||||
done
|
local _cpu="$var_cpu"
|
||||||
|
local _selected_users=""
|
||||||
|
|
||||||
SELECTED_USERS=$(whiptail --backtitle "Ubuntu LXC Setup" \
|
# Wizard so spätnou navigáciou
|
||||||
--title "UŽÍVATELIA" \
|
local STEP=1
|
||||||
--checklist "\nVyber užívateľov na vytvorenie:\n(SPACE = zaškrtni, ENTER = potvrď)" \
|
while true; do
|
||||||
$((user_count + 10)) 58 "$user_count" \
|
case $STEP in
|
||||||
"${checklist_args[@]}" \
|
|
||||||
3>&1 1>&2 2>&3) || exit_script
|
# --- KROK 1: Názov kontajnera ---
|
||||||
|
1)
|
||||||
|
if result=$(whiptail --backtitle "Ubuntu LXC Setup [Krok $STEP/6]" \
|
||||||
|
--title "NÁZOV KONTAJNERA" \
|
||||||
|
--ok-button "Ďalej" --cancel-button "Zrušiť" \
|
||||||
|
--inputbox "\nZadaj názov kontajnera (zobrazí sa v Proxmoxe):\n\nHostname sa vytvorí automaticky malými písmenami." 12 58 "$_ct_name" \
|
||||||
|
3>&1 1>&2 2>&3); then
|
||||||
|
[[ -n "$result" ]] && _ct_name="$result"
|
||||||
|
((STEP++))
|
||||||
|
else
|
||||||
|
exit_script
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
# --- KROK 2: IP adresa + gateway ---
|
||||||
|
2)
|
||||||
|
if result=$(whiptail --backtitle "Ubuntu LXC Setup [Krok $STEP/6]" \
|
||||||
|
--title "IP ADRESA" \
|
||||||
|
--ok-button "Ďalej" --cancel-button "Späť" \
|
||||||
|
--inputbox "\nZadaj statickú IP adresu s maskou\n(napr. 192.168.1.100/24)\n\nAlebo nechaj prázdne pre DHCP:" 12 58 "$_ip_input" \
|
||||||
|
3>&1 1>&2 2>&3); then
|
||||||
|
_ip_input="$result"
|
||||||
|
if [[ -n "$_ip_input" ]]; then
|
||||||
|
local default_gw
|
||||||
|
default_gw=$(echo "$_ip_input" | cut -d'/' -f1 | sed 's/\.[0-9]*$/.1/')
|
||||||
|
[[ -z "$_gate" ]] && _gate="$default_gw"
|
||||||
|
if gw_result=$(whiptail --backtitle "Ubuntu LXC Setup [Krok $STEP/6]" \
|
||||||
|
--title "GATEWAY" \
|
||||||
|
--ok-button "Ďalej" --cancel-button "Späť" \
|
||||||
|
--inputbox "\nZadaj gateway:" 10 58 "$_gate" \
|
||||||
|
3>&1 1>&2 2>&3); then
|
||||||
|
_gate="$gw_result"
|
||||||
|
[[ -z "$_gate" ]] && _gate="$default_gw"
|
||||||
|
((STEP++))
|
||||||
|
else
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
_gate=""
|
||||||
|
((STEP++))
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
((STEP--))
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
# --- KROK 3: DNS ---
|
||||||
|
3)
|
||||||
|
if result=$(whiptail --backtitle "Ubuntu LXC Setup [Krok $STEP/6]" \
|
||||||
|
--title "DNS SERVERY" \
|
||||||
|
--ok-button "Ďalej" --cancel-button "Späť" \
|
||||||
|
--inputbox "\nZadaj DNS servery (oddelené medzerou):" 10 58 "$_dns" \
|
||||||
|
3>&1 1>&2 2>&3); then
|
||||||
|
[[ -n "$result" ]] && _dns="$result"
|
||||||
|
((STEP++))
|
||||||
|
else
|
||||||
|
((STEP--))
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
# --- KROK 4: Resources ---
|
||||||
|
4)
|
||||||
|
if result=$(whiptail --backtitle "Ubuntu LXC Setup [Krok $STEP/6]" \
|
||||||
|
--title "ZDROJE" \
|
||||||
|
--ok-button "Ďalej" --cancel-button "Späť" \
|
||||||
|
--inputbox "\nDisk (GB) / RAM (MB) / CPU (jadrá)\noddelené medzerou:" 10 58 "$_disk $_ram $_cpu" \
|
||||||
|
3>&1 1>&2 2>&3); then
|
||||||
|
if [[ -n "$result" ]]; then
|
||||||
|
_disk=$(echo "$result" | awk '{print $1}')
|
||||||
|
_ram=$(echo "$result" | awk '{print $2}')
|
||||||
|
_cpu=$(echo "$result" | awk '{print $3}')
|
||||||
|
[[ -z "$_disk" ]] && _disk="$var_disk"
|
||||||
|
[[ -z "$_ram" ]] && _ram="$var_ram"
|
||||||
|
[[ -z "$_cpu" ]] && _cpu="$var_cpu"
|
||||||
|
fi
|
||||||
|
((STEP++))
|
||||||
|
else
|
||||||
|
((STEP--))
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
# --- KROK 5: Výber užívateľov ---
|
||||||
|
5)
|
||||||
|
if [[ "$user_count" -eq 0 ]]; then
|
||||||
|
_selected_users=""
|
||||||
|
((STEP++))
|
||||||
|
else
|
||||||
|
local checklist_args=()
|
||||||
|
for i in $(seq 0 $((user_count - 1))); do
|
||||||
|
checklist_args+=("${usernames[$i]}" "${key_counts[$i]} SSH kľúč(ov)" "ON")
|
||||||
|
done
|
||||||
|
|
||||||
|
if result=$(whiptail --backtitle "Ubuntu LXC Setup [Krok $STEP/6]" \
|
||||||
|
--title "UŽÍVATELIA" \
|
||||||
|
--ok-button "Ďalej" --cancel-button "Späť" \
|
||||||
|
--checklist "\nVyber užívateľov na vytvorenie:\n(SPACE = zaškrtni, ENTER = potvrď)" \
|
||||||
|
$((user_count + 10)) 58 "$user_count" \
|
||||||
|
"${checklist_args[@]}" \
|
||||||
|
3>&1 1>&2 2>&3); then
|
||||||
|
_selected_users="$result"
|
||||||
|
((STEP++))
|
||||||
|
else
|
||||||
|
((STEP--))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
# --- KROK 6: Potvrdenie ---
|
||||||
|
6)
|
||||||
|
local _hn
|
||||||
|
_hn=$(echo "${_ct_name,,}" | tr -d ' ' | tr -c 'a-z0-9-' '-')
|
||||||
|
local _net_display="dhcp"
|
||||||
|
[[ -n "$_ip_input" ]] && _net_display="$_ip_input"
|
||||||
|
|
||||||
|
local confirm_text="Názov: $_ct_name\n"
|
||||||
|
confirm_text+="Hostname: $_hn\n"
|
||||||
|
confirm_text+="IP: $_net_display\n"
|
||||||
|
[[ -n "$_gate" ]] && confirm_text+="Gateway: $_gate\n"
|
||||||
|
confirm_text+="DNS: $_dns\n"
|
||||||
|
confirm_text+="Disk: ${_disk}GB RAM: ${_ram}MB CPU: ${_cpu}\n"
|
||||||
|
[[ -n "$_selected_users" ]] && confirm_text+="Užívatelia: $_selected_users\n"
|
||||||
|
|
||||||
|
if whiptail --backtitle "Ubuntu LXC Setup [Krok $STEP/6]" \
|
||||||
|
--title "POTVRDENIE" \
|
||||||
|
--ok-button "Inštalovať" --cancel-button "Späť" \
|
||||||
|
--yesno "$confirm_text\nPokračovať s inštaláciou?" 18 58; then
|
||||||
|
break
|
||||||
|
else
|
||||||
|
((STEP--))
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Nastavenie premenných z wizardu
|
||||||
|
HN=$(echo "${_ct_name,,}" | tr -d ' ' | tr -c 'a-z0-9-' '-')
|
||||||
|
APP_DISPLAY_NAME="$_ct_name"
|
||||||
|
if [[ -n "$_ip_input" ]]; then
|
||||||
|
NET="$_ip_input"
|
||||||
|
GATE="$_gate"
|
||||||
|
else
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
fi
|
fi
|
||||||
|
NS="-nameserver=${_dns}"
|
||||||
|
DISK_SIZE="$_disk"
|
||||||
|
RAM_SIZE="$_ram"
|
||||||
|
CORE_COUNT="$_cpu"
|
||||||
|
SELECTED_USERS="$_selected_users"
|
||||||
|
|
||||||
# Export pre install skript
|
# Export pre install skript
|
||||||
export SELECTED_USERS
|
export SELECTED_USERS
|
||||||
@@ -177,7 +262,6 @@ simple_install() {
|
|||||||
VLAN=""
|
VLAN=""
|
||||||
MTU=""
|
MTU=""
|
||||||
SD=""
|
SD=""
|
||||||
NS=""
|
|
||||||
IPV6_METHOD="auto"
|
IPV6_METHOD="auto"
|
||||||
IPV6_ADDR=""
|
IPV6_ADDR=""
|
||||||
IPV6_GATE=""
|
IPV6_GATE=""
|
||||||
@@ -198,30 +282,6 @@ simple_install() {
|
|||||||
VERBOSE="no"
|
VERBOSE="no"
|
||||||
METHOD="simple"
|
METHOD="simple"
|
||||||
DIAGNOSTICS="no"
|
DIAGNOSTICS="no"
|
||||||
|
|
||||||
# Zobraz súhrn
|
|
||||||
header_info
|
|
||||||
echo -e "${DEFAULT}${BOLD}${BL}Ubuntu LXC - Inštalácia${CL}"
|
|
||||||
echo -e "${TAB}${HOSTNAME}${YW} Hostname: ${GN}${HN}${CL}"
|
|
||||||
echo -e "${TAB}${NETWORK}${YW} IP: ${GN}${NET}${CL}"
|
|
||||||
if [[ -n "$GATE" ]]; then
|
|
||||||
echo -e "${TAB}${GATEWAY}${YW} Gateway: ${GN}${GATE}${CL}"
|
|
||||||
fi
|
|
||||||
echo -e "${TAB}${INFO}${YW} DNS: ${GN}${dns_input}${CL}"
|
|
||||||
echo -e "${TAB}${DISKSIZE}${YW} Disk: ${GN}${DISK_SIZE}GB${CL}"
|
|
||||||
echo -e "${TAB}${RAMSIZE}${YW} RAM: ${GN}${RAM_SIZE}MB${CL}"
|
|
||||||
echo -e "${TAB}${CPUCORE}${YW} CPU: ${GN}${CORE_COUNT} jadier${CL}"
|
|
||||||
if [[ -n "$SELECTED_USERS" ]]; then
|
|
||||||
echo -e "${TAB}${ROOTSSH}${YW} Užívatelia: ${GN}${SELECTED_USERS}${CL}"
|
|
||||||
fi
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# Potvrdenie
|
|
||||||
if ! whiptail --backtitle "Ubuntu LXC Setup" \
|
|
||||||
--title "POTVRDENIE" \
|
|
||||||
--yesno "Pokračovať s inštaláciou?" 8 58; then
|
|
||||||
exit_script
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Spustenie
|
# Spustenie
|
||||||
|
|||||||
Reference in New Issue
Block a user