mirror of https://git.envs.net/envs/ops.git
wip: current users_info.sh
This commit is contained in:
parent
b2c4970381
commit
5246529e85
|
@ -19,6 +19,50 @@ TMP_JSON='/tmp/users_info.json_tmp'
|
||||||
|
|
||||||
clear_lastline() { sed -i '$ s/,$//' "$TMP_JSON" ; }
|
clear_lastline() { sed -i '$ s/,$//' "$TMP_JSON" ; }
|
||||||
|
|
||||||
|
progress_userarray() {
|
||||||
|
for field in "${!line_to_set[@]}"; do
|
||||||
|
field_name="${field//,*/}"
|
||||||
|
field_count="${field//*,/}"
|
||||||
|
|
||||||
|
if [[ ":${field_is_array[*]}:" =~ $field_name ]] && ! [[ ":${field_finished[*]}:" =~ $field_name ]]; then
|
||||||
|
# begin of user def. array
|
||||||
|
if [ -z "$field_in_progress" ]; then
|
||||||
|
field_in_progress="$field_name"
|
||||||
|
cat << EOM >> "$TMP_JSON"
|
||||||
|
"$field_name": [
|
||||||
|
"${line_to_set[$field]}",
|
||||||
|
EOM
|
||||||
|
else
|
||||||
|
if [ "$field_in_progress" != "$field_name" ] && ! [[ ":${field_queue[*]}:" =~ $field_name ]]; then
|
||||||
|
field_queue+=( "$field_name" )
|
||||||
|
else
|
||||||
|
if [ "$field_in_progress" = "$field_name" ]; then
|
||||||
|
# continue user def. array
|
||||||
|
cat << EOM >> "$TMP_JSON"
|
||||||
|
"${line_to_set[$field]}",
|
||||||
|
EOM
|
||||||
|
if [ "$field_count" = "${hc_field_entry[$field_name]}" ]; then
|
||||||
|
# end of user def. array
|
||||||
|
# remove trailing ',' on last user entry
|
||||||
|
clear_lastline
|
||||||
|
cat << EOM >> "$TMP_JSON"
|
||||||
|
],
|
||||||
|
EOM
|
||||||
|
unset field_in_progress
|
||||||
|
field_finished+=( "$field_name" )
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if ! [[ ":${field_queue[*]}:" =~ $field_name ]]; then
|
||||||
|
field_queue+=( "$field_name" )
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
cat << EOM > "$TMP_JSON"
|
cat << EOM > "$TMP_JSON"
|
||||||
{
|
{
|
||||||
"timestamp": "$(date +'%s')",
|
"timestamp": "$(date +'%s')",
|
||||||
|
@ -119,21 +163,23 @@ EOM
|
||||||
count_entry='0' # use to limit entrys
|
count_entry='0' # use to limit entrys
|
||||||
count_field_entry='0' # use to separat array line by line
|
count_field_entry='0' # use to separat array line by line
|
||||||
|
|
||||||
unset field_exists ; declare -a field_exists=() # contains field names to limit entrys
|
unset field_exists ; declare -a field_exists=() # contains field names to limit entrys
|
||||||
unset field_is_array ; declare -a field_is_array=() # contains array fields to printf correct json entrys
|
unset field_is_array ; declare -a field_is_array=() # contains array fields to printf correct json entrys
|
||||||
unset line_to_set ; declare -A line_to_set # contains user info lines
|
unset line_to_set ; declare -A line_to_set # contains user info lines
|
||||||
unset hc_field_entry ; declare -A hc_field_entry # contains highest_count_field_entry
|
unset hc_field_entry ; declare -A hc_field_entry # contains highest_count_field_entry
|
||||||
|
|
||||||
# check 'INFO_FILE' and add entrys to 'line_to_set' array
|
# check 'INFO_FILE' and add entrys to 'line_to_set' array
|
||||||
while read -r LINE ; do
|
while read -r LINE ; do
|
||||||
if [[ -n "$LINE" ]] && ! [[ "$LINE" = '#'* ]] \
|
if [ -n "$LINE" ] && ! [[ "$LINE" = '#'* ]] \
|
||||||
&& ! [[ "$LINE" = 'desc='* ]] && ! [[ "$LINE" = 'ssh_pubkey='* ]]; then
|
&& ! [[ "$LINE" = 'desc='* ]] && ! [[ "$LINE" = 'ssh_pubkey='* ]]; then
|
||||||
user_field="${LINE//=*/}"
|
user_field="${LINE//=*/}"
|
||||||
user_value="${LINE//*=/}"
|
user_value="${LINE//*=/}"
|
||||||
|
|
||||||
if ! [[ ":${field_exists[*]}:" =~ $user_field ]]; then
|
if ! [[ ":${field_exists[*]}:" =~ $user_field ]]; then
|
||||||
# entry will be a single line
|
# entry will be a single line
|
||||||
count_entry="$(( "$count_entry" + 1 ))"; [ "$count_entry" -le '10' ] || continue
|
count_entry="$(( "$count_entry" + 1 ))" ; count_field_entry="$(( "$count_field_entry" +1 ))"
|
||||||
|
#[ "$count_entry" -le '10' ] || continue
|
||||||
|
|
||||||
field_exists+=( "$user_field" )
|
field_exists+=( "$user_field" )
|
||||||
line_to_set["$user_field","$count_field_entry"]+="$user_value"
|
line_to_set["$user_field","$count_field_entry"]+="$user_value"
|
||||||
else
|
else
|
||||||
|
@ -141,8 +187,10 @@ EOM
|
||||||
if ! [[ ":${field_is_array[*]}:" =~ $user_field ]]; then
|
if ! [[ ":${field_is_array[*]}:" =~ $user_field ]]; then
|
||||||
field_is_array+=( "$user_field" )
|
field_is_array+=( "$user_field" )
|
||||||
fi
|
fi
|
||||||
count_field_entry="$(( "$count_field_entry" +1 ))" ; [ "$count_field_entry" -le '32' ] || continue
|
count_field_entry="$(( "$count_field_entry" +1 ))"
|
||||||
hc_field_entry["$user_field"]="$count_field_entry"
|
#[ "$count_field_entry" -le '32' ] || continue
|
||||||
|
|
||||||
|
hc_field_entry[$user_field]="$count_field_entry"
|
||||||
line_to_set["$user_field","$count_field_entry"]+="$user_value"
|
line_to_set["$user_field","$count_field_entry"]+="$user_value"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -160,43 +208,20 @@ EOM
|
||||||
EOM
|
EOM
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
#
|
#
|
||||||
# array line entrys
|
# array line entrys
|
||||||
field_in_progress=''
|
field_in_progress=''
|
||||||
|
unset field_queue ; declare -a field_queue=()
|
||||||
|
unset field_finished ; declare -a field_finished=()
|
||||||
|
|
||||||
for field in "${!line_to_set[@]}"; do
|
progress_userarray
|
||||||
field_name="${field//,*/}"
|
|
||||||
field_count="${field//*,/}"
|
|
||||||
|
|
||||||
if [[ ":${field_is_array[*]}:" =~ $field_name ]]; then
|
if [[ -n "$field_queue" ]]; then
|
||||||
# begin of user def. array
|
for x in "${!field_queue[@]}"; do
|
||||||
if ! [ "$field_in_progress" = "$field_name" ]; then
|
progress_userarray
|
||||||
field_in_progress="$field_name"
|
done
|
||||||
|
fi
|
||||||
cat << EOM >> "$TMP_JSON"
|
|
||||||
"$field_name": [
|
|
||||||
"${line_to_set[$field]}",
|
|
||||||
EOM
|
|
||||||
else
|
|
||||||
# continue user def. array
|
|
||||||
cat << EOM >> "$TMP_JSON"
|
|
||||||
"${line_to_set[$field]}",
|
|
||||||
EOM
|
|
||||||
|
|
||||||
echo "$field_count - ${hc_field_entry[$field_name]}"
|
|
||||||
|
|
||||||
if [ "$field_count" = "${hc_field_entry[$field_name]}" ] || [ "$field_count" = '0' ]; then
|
|
||||||
# end of user def. array
|
|
||||||
# remove trailing ',' on last user entry
|
|
||||||
unset field_in_progress
|
|
||||||
clear_lastline
|
|
||||||
cat << EOM >> "$TMP_JSON"
|
|
||||||
],
|
|
||||||
EOM
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# ssh
|
# ssh
|
||||||
# only print ssh-pubkey if user has enabled
|
# only print ssh-pubkey if user has enabled
|
||||||
|
|
Loading…
Reference in New Issue