From: Steven Baltakatei Sandoval Date: Fri, 10 Jul 2020 05:42:25 +0000 (+0000) Subject: Merge branch 'develop' into feature/bash-logging-filter/BK-2020-02 X-Git-Url: https://zdv2.bktei.com/gitweb/EVA-2020-02.git/commitdiff_plain/1edc8374df4e44a31194ac4527624ce5564da61f?hp=b96837d1c513195e847b7ec5c84eaa68cfe1f7ee Merge branch 'develop' into feature/bash-logging-filter/BK-2020-02 --- diff --git a/exec/bklog b/exec/bklog new file mode 100644 index 0000000..b908ad9 --- /dev/null +++ b/exec/bklog @@ -0,0 +1,66 @@ +#!/bin/bash +# Desc: Compresses, encrypts, and writes stdin every 5 seconds + +#==BEGIN Define script parameters== +#===BEGIN Initialize variables=== + +# Logging Behavior parameters +scriptTTL_TE="day"; # Time element at the end of which script terminates +scriptTTL="15"; # (temp) Time (seconds) until script terminates +bufferTTL="5"; # Time-to-live (seconds) for each buffer round +dirTempDefault="/dev/shm"; # Default parent of working directory + +# Script Metadata +scriptVersion="0.1.1"; # Define version of script. +scriptName="bklog"; # Define basename of script file. +PATH="$HOME/.local/bin:$PATH"; # Add "$(systemd-path user-binaries)" path in case user apps saved there + +# Arrays +declare -a buffer # Initialize buffer array + +# Variables + +#===END Initialize variables=== + +#===BEGIN Declare local script functions=== +yell() { echo "$0: $*" >&2; } #o Yell, Die, Try Three-Fingered Claw technique +die() { yell "$*"; exit 111; } #o Ref/Attrib: https://stackoverflow.com/a/25515370 +try() { "$@" || die "cannot $*"; } #o +magicProcessWriteBuffer() { + printf "%s\\n" "${buffer[@]}" | cat | cat | cat >> "/dev/shm/$(date +%s)..bkFreqWrite-output1.txt"; + printf "%s\\n" "${buffer[@]}" | cat | cat | cat >> "/dev/shm/$(date +%s)..bkFreqWrite-output2.txt"; + printf "%s\\n" "${buffer[@]}" | cat | cat | cat >> "/dev/shm/$(date +%s)..bkFreqWrite-output3.txt"; +} # Process and Write buffer +main() { + bufferRound=0; + # Run until script TTL seconds pass + while [[ $SECONDS -lt "scriptTTL" ]]; do + bufferTOD="$((SECONDS + bufferTTL))"; + lineCount=0; + # Consume stdin to fill buffer until buffer time-of-death (TOD) arrives + while read -r -t "$bufferTTL" line && [[ $SECONDS -lt "$bufferTOD" ]]; do + # Append line to buffer array + buffer+=("$line"); + echo "DEBUG:Processing line:$lineCount"; + echo "DEBUG:Current line :$line"; + echo "DEBUG:buf elem count :${#buffer[@]}"; + ((lineCount++)); + done; + # Export buffer to asynchronous processing. + magicProcessWriteBuffer & + unset buffer; # Clear buffer array for next bufferRound + # Increment buffer round + ((bufferRound++)); + done; +} + +#===END Declare local script functions=== +#==END Define script parameters== + +#==BEGIN Perform work and exit== +main "$@" # Run main function. +exit 0; +#==END Perform work and exit== + +# Author: Steven Baltakatei Sandoval; +# License: GPLv3+