dynamic amount of server

This commit is contained in:
lelo 2025-04-14 20:04:55 +00:00
parent ae6ee33135
commit edf894a87b

View File

@ -1,7 +1,7 @@
#!/bin/bash
###############################################################################
# Configuration Section (Loaded from config.json)
# Load Configuration from json
###############################################################################
CONFIG_FILE="folder_mount_config.json"
@ -12,31 +12,12 @@ if ! command -v jq >/dev/null 2>&1; then
exit 1
fi
# Load Server 1 configuration
SERVER1_SSH_USER=$(jq -r '.SERVER1.SSH_USER' "$CONFIG_FILE")
SERVER1_SSH_SERVER=$(jq -r '.SERVER1.SSH_SERVER' "$CONFIG_FILE")
SERVER1_SSH_SERVER_PORT=$(jq -r '.SERVER1.SSH_SERVER_PORT' "$CONFIG_FILE")
SERVER1_REMOTE_NFS_PORT=$(jq -r '.SERVER1.REMOTE_NFS_PORT' "$CONFIG_FILE")
SERVER1_LOCAL_PORT_BASE=$(jq -r '.SERVER1.LOCAL_PORT_BASE' "$CONFIG_FILE")
readarray -t SERVER1_MOUNT_POINTS < <(jq -r '.SERVER1.MOUNT_POINTS[]' "$CONFIG_FILE")
readarray -t SERVER1_NFS_SHARES < <(jq -r '.SERVER1.NFS_SHARES[]' "$CONFIG_FILE")
# Load Server 2 configuration
SERVER2_SSH_USER=$(jq -r '.SERVER2.SSH_USER' "$CONFIG_FILE")
SERVER2_SSH_SERVER=$(jq -r '.SERVER2.SSH_SERVER' "$CONFIG_FILE")
SERVER2_SSH_SERVER_PORT=$(jq -r '.SERVER2.SSH_SERVER_PORT' "$CONFIG_FILE")
SERVER2_REMOTE_NFS_PORT=$(jq -r '.SERVER2.REMOTE_NFS_PORT' "$CONFIG_FILE")
SERVER2_LOCAL_PORT_BASE=$(jq -r '.SERVER2.LOCAL_PORT_BASE' "$CONFIG_FILE")
readarray -t SERVER2_MOUNT_POINTS < <(jq -r '.SERVER2.MOUNT_POINTS[]' "$CONFIG_FILE")
readarray -t SERVER2_NFS_SHARES < <(jq -r '.SERVER2.NFS_SHARES[]' "$CONFIG_FILE")
# Define list of server identifiers (must match JSON keys)
SERVERS=("SERVER1" "SERVER2")
# extract the server names at the top level:
SERVERS=($(jq -r 'keys[]' "$CONFIG_FILE"))
###############################################################################
# Function Definitions
###############################################################################
# Check if the SSH tunnel on a given local port is active
is_tunnel_active() {
local port=$1
@ -53,22 +34,14 @@ is_nfs_mounted() {
# Main Loop: Process Each Server and Its Mount Points
###############################################################################
for server in "${SERVERS[@]}"; do
# Retrieve server-specific configuration using indirect expansion
ssh_user_var="${server}_SSH_USER"
ssh_server_var="${server}_SSH_SERVER"
ssh_server_port_var="${server}_SSH_SERVER_PORT"
remote_nfs_port_var="${server}_REMOTE_NFS_PORT"
local_port_base_var="${server}_LOCAL_PORT_BASE"
mount_points_var="${server}_MOUNT_POINTS[@]"
nfs_shares_var="${server}_NFS_SHARES[@]"
SSH_USER=$(jq -r ".[\"${server}\"].SSH_USER" "$CONFIG_FILE")
SSH_SERVER=$(jq -r ".[\"${server}\"].SSH_SERVER" "$CONFIG_FILE")
SSH_SERVER_PORT=$(jq -r ".[\"${server}\"].SSH_SERVER_PORT" "$CONFIG_FILE")
REMOTE_NFS_PORT=$(jq -r ".[\"${server}\"].REMOTE_NFS_PORT" "$CONFIG_FILE")
LOCAL_PORT_BASE=$(jq -r ".[\"${server}\"].LOCAL_PORT_BASE" "$CONFIG_FILE")
SSH_USER="${!ssh_user_var}"
SSH_SERVER="${!ssh_server_var}"
SSH_SERVER_PORT="${!ssh_server_port_var}"
REMOTE_NFS_PORT="${!remote_nfs_port_var}"
LOCAL_PORT_BASE="${!local_port_base_var}"
MOUNT_POINTS=("${!mount_points_var}")
NFS_SHARES=("${!nfs_shares_var}")
readarray -t MOUNT_POINTS < <(jq -r ".[\"${server}\"].MOUNT_POINTS[]" "$CONFIG_FILE")
readarray -t NFS_SHARES < <(jq -r ".[\"${server}\"].NFS_SHARES[]" "$CONFIG_FILE")
echo "-------------------------------------------------"
echo "[INFO] Processing server: ${SSH_SERVER}"
@ -124,5 +97,6 @@ for server in "${SERVERS[@]}"; do
done
done
echo "-------------------------------------------------"
echo "[INFO] All server mount configurations processed."