From 0bb6e509307d6106e02e900a404f89634f7a526f Mon Sep 17 00:00:00 2001 From: Marco Ochse Date: Fri, 4 Jul 2025 19:47:32 +0200 Subject: [PATCH] Update install.sh I tested it extensively and made some adjustments. Let me know if it works for your tests as well and merge it into the PR. Thanks for taking the time! --- install.sh | 112 +++++++++++++++++++++++++++++------------------------ 1 file changed, 61 insertions(+), 51 deletions(-) diff --git a/install.sh b/install.sh index 49f83dca..84057118 100755 --- a/install.sh +++ b/install.sh @@ -1,67 +1,77 @@ #!/usr/bin/env bash - print_help() { - echo "Usage: $0 [-s y|n] [-t h|s|l|i|m|t] -u -p " - echo " -s: Supress Install(y/n) question. Value accepted: yes or no (optional)" - echo " -t: Type of installation. Value accepted: h (hive),s (sensor), l (llm), i(mini),m(mobile),t(tarpit) (optional)" - echo " -u: web username (mandatory for hive installation, otherwirse optional)" - echo " -p: password for web user (mandatory for hive installation, otherwirse optional)" + cat < [-u ] [-p ] + +Options: + -s Suppress installation confirmation prompt (sets myQST=y) + -t Type of installation (required if -s is used): + h - hive (requires -u and -p) + s - sensor (no user/pass required) + l - llm (requires -u and -p) + i - mini (requires -u and -p) + m - mobile (no user/pass required) + t - tarpit (requires -u and -p) + -u Web interface username (required for h/l/i/t) + -p Web interface password (required for h/l/i/t) + -h Show this help message +EOF exit 1 } -validate_s() { - if [[ -n "$myQST" ]]; then - if [[ "$myQST" =~ ^[yYnN]$ ]]; then - return 1 # Valid - else - print_help - fi - else +validate_type() { + [[ "$myTPOT_TYPE" =~ ^[hslimtHSLIMT]$ ]] || { + echo "Invalid installation type: $myTPOT_TYPE" print_help - fi - + } } -validate_t() { - if [[ -n "$myTPOT_TYPE" ]]; then - if [[ "$myTPOT_TYPE" =~ ^[hslimtHSLIMT]$ ]]; then - return 1 # Valid - else - print_help - fi - else - print_help - fi +# Defaults +myQST="" +myTPOT_TYPE="" +myWEB_USER="" +myWEB_PW="" -} - -while getopts ":s:t:u:p:" opt; do +while getopts ":st:u:p:h" opt; do case "$opt" in - s) - myQST="${OPTARG}" - validate_s - ;; - t) - myTPOT_TYPE="${OPTARG}" - validate_t - ;; - u) - export myWEB_USER="${OPTARG}" - ;; - p) - export myWEB_PW="${OPTARG}" - ;; - :) - echo "Option -${OPTARG} requires an argument." - print_help - exit 1 - ;; - \?) - print_help - ;; + s) + myQST="y" + ;; + t) + myTPOT_TYPE="${OPTARG,,}" + validate_type + ;; + u) + export myWEB_USER="${OPTARG}" + ;; + p) + export myWEB_PW="${OPTARG}" + ;; + h|\?) + print_help + ;; + :) + echo "Option -${OPTARG} requires an argument." + print_help + ;; esac done + +# -s requires -t +if [[ "$myQST" == "y" && -z "$myTPOT_TYPE" ]]; then + echo "Error: -t is required when using -s to suppress interaction." + print_help +fi + +# Determine if user/pass are required based on install type +if [[ "$myTPOT_TYPE" =~ ^[hlit]$ ]]; then + [[ -n "$myWEB_USER" && -n "$myWEB_PW" ]] || { + echo "Error: -u and -p are required for installation type '$myTPOT_TYPE'." + print_help + } +fi + myINSTALL_NOTIFICATION="### Now installing required packages ..." myUSER=$(whoami) myTPOT_CONF_FILE="/home/${myUSER}/tpotce/.env"