diff --git a/hub/onboard-spoke.sh b/hub/onboard-spoke.sh index 826b79f..d2a1ce0 100644 --- a/hub/onboard-spoke.sh +++ b/hub/onboard-spoke.sh @@ -13,6 +13,8 @@ touch "$SSH_DIR/known_hosts" chmod 700 "$SSH_DIR" chmod 600 "$SSH_DIR/known_hosts" +check_deps ssh ssh-keygen ssh-keyscan ssh-copy-id rclone + RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' @@ -39,6 +41,19 @@ retry_or_abort() { } info() { echo -e "${GREEN}[+]${NC} $*"; } +check_deps() { + local missing=() + for cmd in "$@"; do + if ! command -v "$cmd" >/dev/null 2>&1; then + missing+=("$cmd") + fi + done + if [ ${#missing[@]} -gt 0 ]; then + die "Missing required dependencies: ${missing[*]}" + fi +} + + warn() { echo -e "${YELLOW}[!]${NC} $*"; } die() { echo -e "${RED}[ERROR]${NC} $*" >&2; exit 1; } header() { echo -e "\n${CYAN}══════════════════════════════════════════${NC}"; echo -e "${CYAN} $*${NC}"; echo -e "${CYAN}══════════════════════════════════════════${NC}"; } diff --git a/hub/setup-hub.sh b/hub/setup-hub.sh index 4eb1319..107c918 100644 --- a/hub/setup-hub.sh +++ b/hub/setup-hub.sh @@ -33,12 +33,27 @@ check_permissions() { } info() { echo -e "${GREEN}[+]${NC} $*"; } +check_deps() { + local missing=() + for cmd in "$@"; do + if ! command -v "$cmd" >/dev/null 2>&1; then + missing+=("$cmd") + fi + done + if [ ${#missing[@]} -gt 0 ]; then + die "Missing required dependencies: ${missing[*]}" + fi +} + + warn() { echo -e "${YELLOW}[!]${NC} $*"; } die() { echo -e "${RED}[ERROR]${NC} $*" >&2; exit 1; } header() { echo -e "\n${CYAN}══════════════════════════════════════════${NC}"; echo -e "${CYAN} $*${NC}"; echo -e "${CYAN}══════════════════════════════════════════${NC}"; } [ "$(id -u)" -eq 0 ] || die "Run as root" +check_deps ssh ssh-keygen systemctl useradd groupadd crontab + header "TinyBoard Hub Setup" read -rp "Hub username [armbian]: " HUB_USER diff --git a/spoke/setup-spoke.sh b/spoke/setup-spoke.sh index 5ca9f27..3dee549 100644 --- a/spoke/setup-spoke.sh +++ b/spoke/setup-spoke.sh @@ -60,12 +60,27 @@ check_permissions() { } info() { echo -e "${GREEN}[+]${NC} $*"; } +check_deps() { + local missing=() + for cmd in "$@"; do + if ! command -v "$cmd" >/dev/null 2>&1; then + missing+=("$cmd") + fi + done + if [ ${#missing[@]} -gt 0 ]; then + die "Missing required dependencies: ${missing[*]}" + fi +} + + warn() { echo -e "${YELLOW}[!]${NC} $*"; } die() { echo -e "${RED}[ERROR]${NC} $*" >&2; exit 1; } header() { echo -e "\n${CYAN}══════════════════════════════════════════${NC}"; echo -e "${CYAN} $*${NC}"; echo -e "${CYAN}══════════════════════════════════════════${NC}"; } [ "$(id -u)" -eq 0 ] || die "Run as root" +check_deps ip ssh ssh-keygen ssh-keyscan systemctl hostnamectl + read -rp "Hub hostname [oily.dad]: " HUB_HOST HUB_HOST="${HUB_HOST:-oily.dad}" read -rp "Hub SSH user [armbian]: " HUB_USER