54 lines
1.2 KiB
Bash
Executable File
54 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# BEGIN: Variables
|
|
|
|
DHCPD_CONF_CONTENTS="$(<${CONFIG_FILE:?"DHCPD_CONFIG was not set"})"
|
|
|
|
# END: Variables
|
|
|
|
|
|
# BEGIN: Functions
|
|
|
|
get_shared_network_declarations () {
|
|
local CURRENT_BUFFER=""
|
|
local CURRENT_SHARED_NETWORK_NAME=""
|
|
local -i OPEN_BRACKETS=0
|
|
local -i CLOSE_BRACKETS=0
|
|
local CAN_READ=0
|
|
local -n HASH_TABLE="${1:?"get_declarations: Has table variable not passed into function"}"
|
|
|
|
while read line; do
|
|
if [[ "$line" =~ ^$SHARED_NETWORK_BEGIN_REGEX.*$ ]]; then
|
|
CAN_READ=1
|
|
CURRENT_SHARED_NETWORK_NAME=`echo $line | awk '{ print $2 }' | tr -d \"`
|
|
fi
|
|
|
|
if [[ $CAN_READ -eq 1 ]]; then
|
|
CURRENT_BUFFER+="$line\n"
|
|
[[ "$line" == *'{'* ]] && ((OPEN_BRACKETS++))
|
|
[[ "$line" == *'}'* ]] && ((CLOSE_BRACKETS++))
|
|
if [[ $OPEN_BRACKETS -eq $CLOSE_BRACKETS ]]; then
|
|
HASH_TABLE["$CURRENT_SHARED_NETWORK_NAME"]="$( echo -e "$CURRENT_BUFFER" )"
|
|
CURRENT_BUFFER=""
|
|
CAN_READ=0
|
|
OPEN_BRACKETS=0
|
|
CLOSE_BRACKETS=0
|
|
CURRENT_SHARED_NETWORK_NAME=""
|
|
fi
|
|
fi
|
|
|
|
done <<< "$DHCPD_CONF_CONTENTS"
|
|
}
|
|
|
|
# END: Functions
|
|
|
|
declare -A testHashTable
|
|
|
|
get_shared_network_declarations testHashTable
|
|
|
|
for name in "${!testHashTable[@]}"; do
|
|
echo "$name"
|
|
echo "${testHashTable[$name]}"
|
|
done
|
|
|