diff --git a/mount_folder.sh b/mount_folder.sh index 763d2b9..0d361ab 100755 --- a/mount_folder.sh +++ b/mount_folder.sh @@ -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."